Поделиться через


Использование фильтра EVR DirectShow

[Компонент, описанный на этой странице, Расширенный отрисовщик видео — это устаревшая функция. Он был заменен простой отрисовщик видео (SVR), предоставляемый через компоненты MediaPlayer и IMFMediaEngine . Чтобы воспроизвести видеоконтент, необходимо отправить данные в один из этих компонентов и разрешить им создать экземпляр нового отрисовщика видео. Эти компоненты оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer или БОЛЕЕ низкий уровень API IMFMediaEngine для воспроизведения видеотрансляции в Windows вместо EVR, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Чтобы создать расширенный фильтр отрисовщика видео (EVR), вызовите CoCreateInstance. CLSID CLSID_EnhancedVideoRenderer, определенный в uuids.h. Для использования фильтра EVR не требуется вызывать MFStartup или MFShutdown.

Дополнительные сведения об использовании фильтра EVR в приложении DirectShow см. в разделе "Воспроизведение аудио и видео" в DirectShow.

Фильтр EVR начинается с одного входного закрепления, соответствующего эталонной потоку. Чтобы добавить пин-коды для вложенных потоков, запросите фильтр для интерфейса IEVRFilterConfig и вызовите IEVRFilterConfig::SetNumberOf Потоки. Вызовите этот метод перед подключением любых входных контактов. Закрепление 0 всегда является потоком ссылок. Подключение этот пин-код перед любыми другими закреплениями, так как формат ссылочного потока может ограничить доступные форматы подпотоков.

Перед запуском графа задайте окно вырезки видео и прямоугольник назначения. Дополнительные сведения см. в разделе "Использование элементов управления отображением видео".

В отличие от средства просмотра видео смешения видео (VMR), EVR не имеет рабочих режимов (оконных, бессерверных и т. д.). В частности:

  • EVR не поддерживает режим окна. Приложение должно предоставить окно вырезки.
  • EVR не имеет режима отрисовки. Чтобы заменить докладчика по умолчанию, вызовите МВФVideoRenderer::InitializeRenderer.
  • EVR не имеет режима смешивания. EVR всегда создает миксер. Если у вас есть один входной поток, не нужно вызывать SetNumberOf Потоки, чтобы принудительно использовать средство смешивания.

Интерфейсы фильтров

Фильтр EVR предоставляет следующие интерфейсы. Некоторые из этих интерфейсов описаны в пакете SDK DirectShow. Используйте QueryInterface для получения указателей на эти интерфейсы:

Интерфейсы входных закреплений

Входные закрепления в фильтре EVR предоставляют следующие интерфейсы. Используйте QueryInterface для получения указателей на эти интерфейсы:

Кроме того, для получения следующего интерфейса можно использовать интерфейс МВФGetService :

Воспроизведение звука и видео в DirectShow

Расширенный отрисовщик видео