выборочно «отключить» более одного фильтра прямых потоков вывода

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

Я начну излагать начальные проблемы, и если потребуется более глубокая техническая информация, я могу дать ее. Надеюсь, достаточно информации для первоначального вопроса (ов).

Я пишу приложение, используя c ++ и directshow, в Visual Studio 2010. Основная спецификация проекта — предварительный просмотр в реальном времени и, в любое время, запись видео на mpeg2 на жесткий диск, а затем на DVD для воспроизведения в стандартном DVD-плеере. все время живой просмотр не должен прерываться.

Захват кажется довольно простой стандартной вещью, которую можно сделать с DirectShow.

Есть несколько пользовательских фильтров, которые я написал. Ничего удивительного, но мы хотели получить собственную информацию о наложении экрана — время, дату и т. Д. — это должно быть в предварительном просмотре и записанном файле. Я использую декомпрессор AVI, подключенный к выводу видеосигнала карты захвата, и подключаю декомпрессор AVI к своему фильтру, чтобы получить изображение RGB, которым я могу манипулировать. Выходные данные этого фильтра затем разделяются через промежуточный фильтр, один выводится на экран, а другой — в кодировщик ms mpeg2. Звук поступает с аудио карты захвата в тот же кодер mpeg2. Выходные данные из кодировщика mpeg2 затем отправляются в файл. Этот файл затем создается для DVD и записывается на DVD.

Так что мои вопросы …

Где и как было бы лучше всего разрешить запуск и остановку только вывода файла mpeg2, выполняемого с помощью действий пользователя?

Я попытался использовать фильтры Smart Tee — 1 для видео и 1 для аудио в качестве последнего фильтра ДО кодера mpeg2, а затем с помощью интерфейса iamstreamcontrol для отключения выводов в соответствующее время. Должно ли это вызвать проблемы с синхронизацией с финальным mpeg2? поскольку выходной файл будет воспроизводиться через mplayer, vlc и т. д., но не будет преобразован в mpeg2 dvd-совместимый (для тестирования — с помощью любого программного обеспечения для создания DVD-дисков — жалобы на испорченный файл и somteimes дают ссылки на время) — возможно ли, что метки времени в файл является проблемой и дает ошибку? Если файл захватывается с первого момента, когда начинается захват (в отличие от, скажем, после 5 минут потоковой передачи), то все в порядке.

Я думал об использовании маршрута streambuffer — http://msdn.microsoft.com/en-gb/library/windows/desktop/dd693041(v=vs.85).aspx — но я не уверен в лучшем направлении, чтобы взять вещи. Кажется, что есть несколько вариантов для лучшего направления.

Любая помощь и советы будут с благодарностью. Особенно, если есть сайты / книги / информация о фильтрах DirectShow, булавках, графиках и о том, как они все объединяются.

РЕДАКТИРОВАТЬ: я думал сделать свою собственную копию фильтра «Smart Tee», чтобы в него входило 2 контакта — аудио и видео — и 4 выхода — 2 видео (1 предварительный просмотр и 1 захват) и 2 из то же самое для аудио, но я бы в конечном итоге с той же проблемой? И как правильно обрабатывать «выключение» выводов этого пользовательского фильтра. Буду ли я тратить свое время на работу над чем-то вроде этого? Это простой случай переопределения активных / неактивных методов выходных выводов и отправки или не отправки образца? Я чувствую, что это не так просто?

Большое спасибо!

2

Решение

Где и как было бы лучше всего разрешить запуск и остановку только вывода файла mpeg2, выполняемого с помощью действий пользователя?

Для такого рода действий я бы порекомендовал GMFBridge. Создать свой собственный фильтр нелегко. GMFBridge позволяет использовать два отдельных графика с динамическим соединением. Используйте первый график для предварительного просмотра и второй график для вывода файла. И подключать графики только после действий пользователя.

1

Другие решения


По вопросам рекламы [email protected]