Есть ли способ изменить свойства Capture Pin?

Я разрабатываю визуальное приложение для захвата видео на С++ с использованием DirectShow. Когда я проверил подтип медиа структуры AM_MEDIA_TYPE вывода фильтра захвата, я увидел, что разные веб-камеры захватывают данные в разных форматах, таких как MEDIASUBTYPE_RGB24, MEDIASUBTYPE_MJPG и т. д.

Могу ли я каким-либо образом указать выходному контакту вывод данных в общем формате, таком как MEDIASUBTYPE_RGB24? Я не хочу включать расшифровку всех возможных подтипов.

Прошу вас сообщить мне, есть ли у меня способ привести все данные, захваченные веб-камерой, к общему типу, прежде чем передавать их кодировщику.


person shiju    schedule 20.06.2011    source источник


Ответы (2)


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

См. этот пример.

person Christopher    schedule 20.06.2011

Как правило, каждая камера выдает данные в своем собственном особом формате (форматах) без гарантии того, что она может транскодироваться в драйвере захвата в RGB24 или любой другой формат. Из всех форматов наиболее распространены вариации YUV, поскольку эти форматы можно как отображать непосредственно на экране, так и подавать в последующий фильтр сжатия.

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

Используйте IAMStreamConfig.SetFormat(), чтобы выбрать частоту кадров, размеры, цветовое пространство и сжатие выходных потоков (Capture и Preview) с устройства захвата.

Используйте IAMStreamConfig.GetStreamCaps(), чтобы определить доступные частоты кадров, размеры, цветовые пространства и форматы сжатия. Большинство камер поддерживают несколько различных форматов.

person Jay Borseth    schedule 15.03.2013