Informationen zu den Render-Engines

[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]

In diesem Artikel wird beschrieben, wie DirectShow Editing Services (DES) ein Videobearbeitungsprojekt rendert.

In DES wird ein Projekt als Zeitachse dargestellt. Die Zeitachse ist nützlich, da sie die gängigsten Aufgaben bei der Videobearbeitung vereinfacht, z. B. das Neuordnen von Quellclips und das Hinzufügen von Videoeffekten. Die DirectShow-Streamarchitektur erfordert dagegen ein Filterdiagramm. Daher müssen Sie zum Rendern des Projekts eine Zeitachse in ein Filterdiagramm übersetzen. Die Komponente, die dies tut, wird als Render-Engine bezeichnet. DirectShow stellt zwei Render-Engines bereit:

  • Einfache Render-Engine: Erstellt ein Filterdiagramm, das eine unkomprimierte Ausgabe liefert.
  • Intelligente Render-Engine: Erstellt ein Filterdiagramm, das komprimierte Ausgaben liefert.

Die intelligente Render-Engine verwendet die intelligente Neukomprimierung, um die Leistung zu verbessern. Bei der intelligenten Neukomprimierung werden Quelldateien nur dann neu komprimiert, wenn sich das ursprüngliche Dateiformat vom endgültigen Ausgabeformat unterscheidet. Wenn die Formate übereinstimmen, wird die Quelle nie dekomprimiert. Die intelligente Neukomprimierung wird nur für die Videokomprimierung unterstützt, nicht für die Audiokomprimierung.

Verwenden Sie für die Vorschau die grundlegende Render-Engine. Die intelligente Render-Engine kann auch eine Vorschau anzeigen, aber weniger effizient, da sie den komprimierten Stream dekomprimieren muss. Verwenden Sie zum Schreiben von Dateien die intelligente Render-Engine, wenn Sie eine intelligente Neukomprimierung wünschen. Verwenden Sie andernfalls die grundlegende Render-Engine. Die intelligente Neukomprimierung kann die Zeit zum Schreiben der Datei erheblich reduzieren.

Wichtig

Verwenden Sie die intelligente Render-Engine nicht, um Windows Mediendateien zu lesen oder zu schreiben.

Wichtig

Beide Render-Engines erstellen ein unsichtbares Fenster, das Nachrichten verarbeitet. Der Thread, der die Render-Engine erstellt, muss über eine Nachrichtenschleife verfügen, um Nachrichten zu senden. Außerdem darf dieser Thread erst beendet werden, nachdem die Render-Engine und der Filter Graph Manager freigegeben wurden. Andernfalls kann die Anwendung zu einem Deadlock führen.

Erstellen des Filter-Graph

Das Filterdiagramm wird in zwei Phasen erstellt. In der ersten Phase erstellt die Render-Engine ein "Front-End", bei dem es sich um einen Teilfiltergraphen handelt. Das folgende Diagramm veranschaulicht ein typisches Front-End:

Filtern des Graph-Front-End

Die Subsysteme enthalten verschiedene spezielle Filter, die die Render-Engine automatisch zusammenfügt. Das Front-End enthält einen Ausgabepin für jede Gruppe auf der Zeitachse. Die Ausgabepins liefern unkomprimierte Daten, wenn Sie die grundlegende Render-Engine verwenden, oder komprimierte Daten, wenn Sie die intelligente Render-Engine verwenden.

Im zweiten Schritt sind die Ausgabepins mit Renderingfiltern verbunden. Für die Vorschau sind die Renderingfilter Video- und Audiorenderer. Beim Schreiben von Dateien handelt es sich bei den Renderingfiltern um Multiplexerfilter (mux) und Dateischreibfilter.

Vervollständigen des Filterdiagramms

Vorschau einer Project

Schreiben eines Project in eine Datei