Можно ли получить необработанные видеокадры из DirectShow без воспроизведения? - PullRequest
4 голосов
/ 19 января 2012

Я работаю над медиаплеером, используя Media Foundation.Я хочу поддерживать воспроизведение файлов VOB.Однако Media Foundation в настоящее время не поддерживает контейнер VOB.Поэтому я хочу использовать DirectShow для того же.

Моя идея здесь состоит не в том, чтобы выбрать альтернативный путь с использованием графа DirectsShow, а просто взять видеокадр и передать его тому же конвейеру в основании мультимедиа.В медиа-фонде у меня есть IMFSourceReader, который просто читает кадры из видеофайла.Есть ли прямой эквивалент шоу, который просто дает мне кадры без необходимости создавать график, запускать цикл воспроизведения, а затем пытаться извлечь кадры из вывода рендеринга?(Чтобы быть более понятным, поддерживает ли DirectsShow архитектуру, в которой он может давать необработанные кадры без необходимости воспроизводить видео?)

Я читал об ISampleGrabber, но он устарел, и я думаю, что он не подходитмоя архитектураЯ не работал над DirectShow раньше.

Спасибо, Моты

Ответы [ 2 ]

6 голосов
/ 19 января 2012

Вы должны построить график и принять кадры из соответствующего фильтра анализатора / демультиплексора, который будет считывать контейнер и доставлять отдельные кадры на его выходе.

Воспроизведение не обязательно должно быть в реальном времени, и вам не нужно где-то подделывать рисование этих видеокадров. Получив необходимые данные в фильтре Sample Grabber или в фильтре клиента, вы можете завершить конвейер с помощью Null Renderer. То есть вы можете организовать получение необходимых кадров более или менее удобным способом.

0 голосов
/ 19 ноября 2012

Вы можете использовать Фильтр захвата кадра Monogram для подключения выхода фильтра VOB DS - он отлично работает. См. Там комментарии о том, как подключить выход к внешнему приложению.

...