Einführung in die DirectShow-Anwendungsprogrammierung
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
In diesem Artikel werden die grundlegenden Terminologien und Konzepte vorgestellt, die in DirectShow verwendet werden. Nachdem Sie diesen Abschnitt gelesen haben, können Sie Ihre erste DirectShow-Anwendung schreiben.
Filter und Filterdiagramme
Der Baustein von DirectShow ist eine Softwarekomponente, die als Filter bezeichnet wird. Ein Filter ist eine Softwarekomponente, die einen Vorgang für einen Multimediadatenstrom ausführt. Beispielsweise können DirectShow-Filter
- Dateien lesen
- Abrufen von Videos von einem Videoaufnahmegerät
- decodieren Sie verschiedene Streamformate, z. B. MPEG-1-Video
- Daten an die Grafik- oder Sound-Karte übergeben
Filter empfangen Eingaben und erzeugen Eine Ausgabe. Wenn ein Filter beispielsweise MPEG-1-Video decodiert, ist die Eingabe der MPEG-codierte Stream, und die Ausgabe ist eine Reihe von unkomprimierten Videoframes.
In DirectShow führt eine Anwendung jede Aufgabe durch Verbinden von Filterketten aus, sodass die Ausgabe eines Filters zur Eingabe für einen anderen wird. Ein Satz verbundener Filter wird als Filterdiagramm bezeichnet. Das folgende Diagramm zeigt beispielsweise ein Filterdiagramm für die Wiedergabe einer AVI-Datei.
Der Dateiquellenfilter liest die AVI-Datei von der Festplatte. Der AVI Splitter-Filter analysiert die Datei in zwei Streams, einen komprimierten Videostream und einen Audiostream. Der AVI-Dekomprimierungsfilter decodiert die Videoframes. Der Videorenderer-Filter zeichnet die Frames mithilfe von DirectDraw oder GDI auf die Anzeige. Der Standardfilter DirectSound Device gibt den Audiostream mithilfe von DirectSound ab.
Die Anwendung muss nicht den gesamten Datenfluss verwalten. Stattdessen werden die Filter von einer allgemeinen Komponente namens Filter Graph Manager gesteuert. Die Anwendung führt allgemeine API-Aufrufe wie "Ausführen" (zum Verschieben von Daten durch das Diagramm) oder "Stop" (zum Beenden des Datenflusses) aus. Wenn Sie mehr Kontrolle über die Streamvorgänge benötigen, können Sie direkt über COM-Schnittstellen auf die Filter zugreifen. Der Filter Graph-Manager übergibt auch Ereignisbenachrichtigungen an die Anwendung.
Der Filter Graph-Manager dient auch einem weiteren Zweck: Er stellt Methoden für die Anwendung bereit, um das Filterdiagramm zu erstellen, indem die Filter miteinander verbunden werden. (DirectShow bietet auch verschiedene Hilfsobjekte, die diesen Prozess vereinfachen. Diese werden in der Dokumentation ausführlich beschrieben.)
Schreiben einer DirectShow-Anwendung
Im Allgemeinen gibt es drei Aufgaben, die eine DirectShow-Anwendung ausführen muss. Diese werden im folgenden Diagramm veranschaulicht.
- Die Anwendung erstellt eine instance des Filter Graph-Managers.
- Die Anwendung verwendet den Filter graph-Manager, um ein Filterdiagramm zu erstellen. Der genaue Satz von Filtern im Diagramm hängt von der Anwendung ab.
- Die Anwendung verwendet den Filtergraph-Manager, um das Filterdiagramm zu steuern und Daten über die Filter zu streamen. Während dieses Prozesses reagiert die Anwendung auch auf Ereignisse aus dem Filter Graph-Manager.
Nach Abschluss der Verarbeitung gibt die Anwendung den Filter graph-Manager und alle Filter frei.
DirectShow basiert auf COM; Der Filter Graph-Manager und die Filter sind alle COM-Objekte. Sie sollten über ein allgemeines Verständnis der COM-Clientprogrammierung verfügen, bevor Sie mit der Programmierung von DirectShow beginnen. Viele Bücher zur COM-Programmierung sind verfügbar.
Informationen zu den ersten Schritten mit DirectShow finden Sie im Artikel Wiedergeben einer Datei, in dem eine einfache Konsolenanwendung zum Wiedergeben einer Videodatei vorgestellt wird. Im Abschnitt Über DirectShow wird die DirectShow-Architektur ausführlicher erläutert, während der Abschnitt Verwenden von DirectShow die wichtigsten Szenarien untersucht, die von DirectShow unterstützt werden, z. B. Aufnahme, Videobearbeitung, DVD-Wiedergabe und Fernsehen.