Захват видео очень медленно в C#

Я пытаюсь написать видео плеер, который может накладывать видео с текстом и изображением. Сейчас я использую сэмплерный фильтр для захвата видео, чтобы захватить видео и представить его в своем программном обеспечении. Он работает нормально, но очень медленно на менее мощных системах, таких как Atom. Я также пытался использовать EVR Presenter, как предлагали другие. Я использовал пример кода EVR Presenter из проекта кода ( EVR Presenter в чистом C# с Direct3D Video Rendering) в Управляемом графическом программировании DirectX 9 и игре, Kick Start для преобразования кадра в текстуру и отображения преобразованной текстуры на экране, пример кода показан ниже:

    lock (m_csLock)
{
    if (systemSurface == null)
        systemSurface = Surface.CreateOffscreenPlain(m_Device, _surface.Description.Width, _surface.Description.Height, _surface.Description.Format, Pool.SystemMemory);

    if (texture == null)
        texture = new Texture(m_Device, systemSurface.Description.Width, systemSurface.Description.Height, 1, Usage.Dynamic, systemSurface.Description.Format, Pool.Default);

    using (Surface texturesurface = texture.GetSurfaceLevel(0))
    {
        m_Device.GetRenderTargetData(_surface, systemSurface);
        m_Device.UpdateSurface(systemSurface, texturesurface);
    }
}

Но все равно скорость рендеринга очень низкая и отнимает много ресурсов процессора. Могу ли я узнать, есть ли способ захватить видео или скопировать видеокадр в текстуру быстрее?

0 ответов

Другие вопросы по тегам