Freigeben über


Verwenden des DirectShow EVR-Filters

[Die auf dieser Seite beschriebene Komponente, Erweiterter Videorenderer, ist ein Legacyfeature. Sie wurde durch den Simple Video Renderer (SVR) abgelöst, der über die Komponenten MediaPlayer und IMFMediaEngine verfügbar gemacht wurde. Um Videoinhalte wiederzugeben, sollten Sie Daten an eine dieser Komponenten senden und es ihnen ermöglichen, den neuen Videorenderer zu instanziieren. Diese Komponenten wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer-APIs oder die IMFMediaEngine-APIs auf niedrigerer Ebene anstelle des EVR verwendet, um Videomedien in Windows wiederzugeben. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, wenn möglich umgeschrieben wird, um die neuen APIs zu verwenden.]

Rufen Sie CoCreateInstance auf, um den erweiterten Videorendererfilter (EVR) zu erstellen. Die CLSID ist CLSID_EnhancedVideoRenderer, wie in uuids.h definiert. Sie müssen mfStartup oder MFShutdown nicht aufrufen, um den EVR-Filter zu verwenden.

Weitere Informationen zur Verwendung des EVR-Filters in einer DirectShow-Anwendung finden Sie unter Audio-/Videowiedergabe in DirectShow.

Der EVR-Filter beginnt mit einem Eingabepin, der dem Referenzdatenstrom entspricht. Um Pins für untergeordnete Streams hinzuzufügen, fragen Sie den Filter für die IEVRFilterConfig-Schnittstelle ab, und rufen Sie IEVRFilterConfig::SetNumberOfStreams auf. Rufen Sie diese Methode auf, bevor Sie Eingabepins verbinden. Pin 0 ist immer der Verweisstream. Verbinden Sie diesen Pin vor anderen Pins, da das Format des Verweisstreams möglicherweise einschränken kann, welche untergeordneten Streamformate verfügbar sind.

Legen Sie vor dem Starten des Diagramms das Videoausschnittfenster und das Zielrechteck fest. Weitere Informationen finden Sie unter Verwenden der Videoanzeigesteuerelemente.

Im Gegensatz zum Videomischungsrenderer (VMR) verfügt der EVR nicht über Betriebsmodi (mit Fenster, ohne Fenster usw.). Dies gilt insbesondere für:

  • Der EVR unterstützt den Modus mit Fenster nicht. Die Anwendung muss das Beschneidungsfenster bereitstellen.
  • Der EVR verfügt nicht über einen renderlosen Modus. Rufen Sie zum Ersetzen des Standardpresenters IMFVideoRenderer::InitializeRenderer auf.
  • Der EVR verfügt nicht über einen Mischmodus. Der EVR erstellt den Mischer immer. Wenn Sie über einen Eingabestream verfügen, ist es nicht erforderlich, SetNumberOfStreams aufzurufen, um den EVR zur Verwendung des Mixers zu zwingen.

Filterschnittstellen

Der EVR-Filter macht die folgenden Schnittstellen verfügbar. Einige dieser Schnittstellen sind im DirectShow SDK dokumentiert. Verwenden Sie QueryInterface, um Zeiger auf diese Schnittstellen abzurufen:

Eingabepin-Schnittstellen

Die Eingabepins im EVR-Filter machen die folgenden Schnittstellen verfügbar. Verwenden Sie QueryInterface, um Zeiger auf diese Schnittstellen abzurufen:

Darüber hinaus können Sie die Schnittstelle IMFGetService verwenden, um die folgende Schnittstelle abzurufen:

Audio-/Videowiedergabe in DirectShow

Verbesserter Videorenderer