Konfigurieren des ASF-Writers

Wenn der WM ASF Writer-Filter erstellt wird, wird er automatisch mit dem WMProfile_V80_256Video Profil konfiguriert. Dieses Profil verwendet die Windows Media Audio und Windows Media Video Version 8 Codecs, die nicht so zuletzt sind wie die Windows Media 9 Series-Codecs. Es wird empfohlen, ein benutzerdefiniertes Profil zu erstellen, das die Windows Media 9 Series-Codecs verwendet und den WM ASF Writer mit dem benutzerdefinierten Profil konfigurieren, wie in der Konfiguration von Profilen und anderen ASF-Dateieigenschaften beschrieben. Sie müssen dem Filterdiagramm den WM ASF Writer-Filter hinzufügen, bevor Sie den Filter konfigurieren und den Filter konfigurieren, bevor Sie sie mit anderen Filtern verbinden.

Alle Eingabedaten müssen zeitstempelt sein, und alle Eingabeheften müssen verbunden sein, bevor der Filter ausgeführt oder angehalten werden kann. Wenn Sie den Filter daher mit einem Profil konfigurieren, das über einen Audiodatenstrom und einen Videostream verfügt, erstellt der Filter eine Audio- und eine Videoeingabehefte, und beide Pins müssen verbunden sein, bevor der Filter ausgeführt werden kann. Da das Windows Media Format SDK einen Audiodatenstrom erfordert, muss der WM ASF Writer immer über einen Eingabeaudio-Pin verfügen, auch wenn es sich um einen Dummystream handelt – d. h. ein stummgeschalteter, niedriger Audiostrom mit niedriger Bitrate.

Hinzufügen von Dateneinheitserweiterungen

Sie können einen Profildatenstrom für Dateneinheitserweiterungen konfigurieren, z. B. SMPTE-Zeitcodes, entweder vor oder nach der Verbindung des Filters, solange Sie dieser Reihenfolge der Vorgänge folgen:

  1. Fügen Sie einen oder mehrere Dateneinheitserweiterungen zum Datenstrom mithilfe von IWMStreamConfig2::AddDataUnitExtension hinzu.
  2. Rufen Sie IWMProfile::ReconfigStream auf, um das Profil zu aktualisieren.
  3. Rufen Sie IConfigAsfWriter auf::ConfigureFilterUsingProfile mit dem aktualisierten Profilobjekt.
  4. Suchen Sie die Videoeingabe-Pin, und rufen Sie ihre IAMWMBufferPass::SetNotify-Methode auf, um Ihre anwendungsdefinierte IAMWMBufferPassCallback-Schnittstelle zu registrieren.

Wenn das Diagramm ausgeführt wird, werden Ihre IAMWMBufferPassCallback::Notify-Methode für jeden Frame aufgerufen, und Sie können Eigenschaften im Beispiel mithilfe seiner INSSBuffer3-Schnittstellenmethoden abrufen und festlegen.

Hinweis

In einigen prozessorintensiven Szenarien wie inverse Telecine erfordert der WM ASF Writer möglicherweise mehr Ausgabepuffer, als einige nachgelagerte Filter unterstützen können. Der DV-Decoder akzeptiert beispielsweise nicht mehr als einen Puffer für seine Ausgabehefte und dasselbe gilt für die AVI-Decompressor unter bestimmten Bedingungen. Wenn Probleme auftreten, wenn Sie versuchen, eine Verbindung mit diesen Filtern herzustellen, oder möglicherweise beim Ausführen des Diagramms, ist es möglicherweise erforderlich, einen Zwischenfilter zu schreiben, der eine beliebige Anzahl von Puffern an seiner Ausgabehefte akzeptiert.

 

Erstellen von ASF-Dateien in DirectShow