DirectShow BaseClasses - класс видео рендерера с видео и входным контактом - PullRequest
0 голосов
/ 13 октября 2010

Я не смог найти подходящий класс рендерера в BaseClasses, который имеет 2 входа - один для видео и один для аудио.Кто-нибудь может порекомендовать / предоставить какой-то код?

С уважением, Доминик

Ответы [ 3 ]

1 голос
/ 15 октября 2010

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

Кроме того, вы должны рассмотреть, хотите ли вы даже мультиплексировать потоки: обычно в видео RTP и аудио доставляются в отдельных сеансах RTP.Если вы все еще хотите написать фильтр с несколькими входными выводами, вы можете взглянуть на несколько базовых классов, которые я написал для видеомикшера, доступного по адресу http://sourceforge.net/projects/videoprocessing/ в качестве отправной точки.

1 голос
/ 15 октября 2010

Класс CBaseRenderer является базовым классом для реализации фильтров рендеринга. Он поддерживает только один входной контакт.

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

Рендерер VMR9 (CLSID_VideoMixingRenderer9) отлично подходит для рендеринга видео, тогда как для визуализации аудио используется Рендерер DirectSound (CLSID_DSoundRender).

Возможно, вы пытаетесь записать оба потока данных на диск в медиа-файл? Тогда вам понадобится фильтр мультиплексора, который понимает оба типа мультимедиа. Поскольку я не знаю, какие типы носителей вы используете, я мог бы порекомендовать вам взглянуть на AVI Mux filter , который выполняет такую ​​работу.

Я надеюсь, что это направит вас в правильном направлении;)

0 голосов
/ 06 июня 2015

Насколько я знаю, нет никаких примеров MSDN, которые имеют несколько входных контактов, к сожалению, упущение.

Мультиплексор GDCL mp4 хорошо написан и имеет несколько входных контактов, а исходный код доступен по довольно либеральной лицензии. Это «эталонное качество», написанное одним из оригинальных архитекторов DirectShow. Хотя обработка mp4 довольно сложна, сторона DirectShow достаточно проста. GDCL mp4 фильтры

Большинство фильтров с несколькими входными выводами помещают входящие данные входных контактов в очереди какого-либо рода, которые обрабатываются рабочим потоком, который генерирует файл выходного файла или отправляет обработанные данные на выходные контакты или выводы. CQueue в базовых классах является хорошей отправной точкой для очереди, которая блокирует устройства чтения / записи, когда она пуста / заполнена, хотя для поддержки остановки и сброса потребуется некоторая дополнительная работа. CAMThread является полезной отправной точкой для рабочего потока - см. CSource для примера реализации.

Дополнительные ссылки Как сделать фильтр DirectShow Muxer - часть 1 Как сделать фильтр DirectShow Muxer - часть 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...