Отображение видео в WPF и DirectShow

Это одна из тех неприятных проблем реального мира. У меня есть устройство, которое обеспечивает два видеопотока 1920 x 1080 @ 30 FPS. У меня есть документация и SDK для видеоустройства, которое, естественно, неуправляемо. Он поддерживает GPUDirect. Для наших целей мы протестировали SDK, который представляет собой оболочку типа SharpDX / SlimDX / DirectShow.Net в основном вокруг DirectShow. Правовые вопросы лицензирования могут помешать использованию этого SDK. Поскольку я новичок в этом мире, я пытаюсь найти альтернативное решение.

Вопрос в том, что в образце, который у меня есть, они берут буфер кадра на поверхности и применяют его к входному контакту фильтра. После этого остается загадка. Я вижу видео в окне WPF, могу ли накладывать текст и т. Д. - DirectShow - лучший или самый прямой способ отображения потокового видео, или я обнаружу, что использование DirectX и шейдеров с помощью, скажем, SharpDX проще?

Я понимаю, что этот вопрос носит широкий характер, но я считаю, что есть много других, кто сталкивается с этим несметным количеством инструментов, но не имеет достаточного опыта в этом графическом мире, чтобы сделать лучший выбор и обратиться к тем, кто ушел раньше, чтобы подтолкнуть нас к правильное направление.


person AeroClassics    schedule 05.06.2014    source источник


Ответы (1)


Вопросы, основанные на мнении, в основном считаются не по теме, поэтому я пропускаю эту часть и, кроме того,

DirectShow и DirectX работают вместе только в точке представления видео. Средство визуализации микширования видео 9 и Enhanced Video Renderer используют Direct3D для представления видео. То есть вы должны выбрать наиболее подходящий для вас: либо вы работаете с DirectX напрямую, либо используете DirectShow «ворота» в Direct3D.

Затем сам DirectShow, вы обычно используете его, когда у вас есть источник, связанный с фильтром DirectShow, или вам нужно применить другие фильтры DirectShow для обработки, или вы хотите синхронизировать видео и аудио, или у вас есть веская причина для использования возможностей DirectShow с точки зрения использования доступных компонентов. Если у вас есть видеопоток, созданный из источников, отличных от DirectShow, вам необходимо доставить его в место назначения, отличное от DirectShow, тогда вы можете вообще не использовать DirectShow. DirectShow и Media Foundation - это основные API-интерфейсы для потоковой передачи видео, а упомянутые вами - просто оболочки.

person Roman R.    schedule 05.06.2014
comment
Спасибо, Роман. Если я понимаю, DirectShow предоставляет мне микширование, рендеринг, аудио и тому подобное. Функции более высокого уровня, если хотите. DirectX, так сказать, ниже уровня. Чтобы выполнить то, что мне нужно, я могу использовать API нижнего уровня или API более высокого уровня. На самом деле я мог использовать и то, и другое. Это ситуативно-зависимо. Думаю, в моей конкретной ситуации ответ будет и тем, и другим. - person AeroClassics; 05.06.2014