Erstellen einer Topologie für Two-Pass Windows Media-Codierung

Codierungsmodi mit zwei Durchgängen werden von bestimmten Windows Media-Encodern und Media Foundation auf Pipelineebene unterstützt. Die Anwendung muss die Codierungstopologie ähnlich wie bei der Single-Pass-Codierung konfigurieren und einrichten, aber im Codierungsmodus mit zwei Durchläufen muss die Anwendung die Codierungssitzung zweimal ausführen. Beim ersten Durchlauf sammelt der Encoder Informationen über den Inhalt des Datenstroms. Beim zweiten Durchlauf wird mithilfe der beim ersten Durchlauf gesammelten Informationen die endgültige Ausgabedatei generiert. Durch die zweimalige Verarbeitung der Beispiele für den Stream optimiert die Codierung mit zwei Durchgängen den Codierungsprozess und erzeugt codierte Dateien mit höherer Qualität. Codierungsmodi mit zwei Durchläufen können nicht für Livestreams verwendet werden.

Media Foundation unterstützt die folgenden Codierungsmodi mit zwei Durchgangs:

Das Erstellen einer Codierungstopologie für die Codierung mit zwei Durchlaufs ähnelt den Einzeldurchlaufmodi. Die folgende Liste zeigt die wichtigsten Unterschiede.

  • Die Encoderkonfiguration muss die MFPKEY_PASSESUSED-Eigenschaft enthalten, die auf 2 festgelegt ist, und die MFPKEY_VBRENABLED-Eigenschaft auf VARIANT_TRUE. Dadurch werden die Funktionen des Encoders in Zwei-Pass-Modi gefiltert. Wenn Sie Aktivierungsobjekte verwenden, übergeben Sie diese Eigenschaften an MFCreateWMAEncoderActivate oder MFCreateWMVEncoderActivate.
  • Verwenden Sie für den ersten Durchlauf eine Dummy-Mediensenke im Ausgabeknoten, da die in diesem Durchlauf generierten Beispiele nicht der endgültigen Datei hinzugefügt werden.
  • Fragen Sie für den zweiten Durchlauf den Encoder nach den erforderlichen Nachcodierungseigenschaften ab, und ersetzen Sie den Dummy-Mediensenkenknoten durch die ASF-Mediensenke, die diese Eigenschaften festgelegt hat.

Weitere Informationen zum Einrichten einer Codierungstopologie finden Sie unter Tutorial: Single Pass Windows Media Encoding.

Im folgenden Verfahren werden die Schritte zum Codieren von Windows Media-Inhalten in einem ASF-Container mithilfe eines Codierungsmodus mit zwei Durchgängen zusammengefasst.

  1. Erstellen Sie mithilfe des Quelllösers eine Medienquelle für die angegebene.

  2. Enumerieren Sie die Streams in der Medienquelle.

  3. Erstellen Sie die ASF-Mediensenke, und fügen Sie Streamsenken hinzu, abhängig von den Streams in der Medienquelle, die codiert werden müssen.

  4. Erstellen Sie die Mediensenke.

  5. Erstellen Sie die Windows Media-Encoder für die Streams in der Ausgabedatei.

  6. Konfigurieren Sie die Encoder mit den Codierungseigenschaften von 2 Durchgängen.

  7. Erstellen Sie eine partielle Codierungstopologie, indem Sie die Quelle, encoder und die Mediensenke verbinden.

  8. Instanziieren Sie die Mediensitzung, und legen Sie die Topologie für die Mediensitzung fest.

  9. Führen Sie den ersten Codierungsdurchlauf aus, indem Sie die Mediensitzung steuern und alle relevanten Ereignisse aus der Mediensitzung abrufen.

  10. Schließen Sie die Codierungssitzung, und fahren Sie sie herunter.

  11. Fragen Sie den Encoder abhängig vom Codierungstyp nach den folgenden Eigenschaften ab:

    Codierungstyp Eigenschaftenname
    Codierung mit nicht eingeschränkter variabler Bitrate MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    Codierung variabler Bitrate mit Spitzenbeschränkung MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    MFPKEY_BMAX
    MFPKEY_RMAX

     

  12. Erstellen Sie die ASF-Dateisenke, und fügen Sie die erforderlichen Streamsenken hinzu, abhängig von den Streams, die Sie in die endgültige Ausgabedatei einschließen möchten.

  13. Legen Sie die in Schritt 11 abgerufenen Encodereigenschaften für die Dateisenke fest.

  14. Ersetzen Sie die Mediensenke im Ausgabeknoten durch die neu erstellte Dateisenke.

  15. Instanziieren Sie die Mediensitzung, und legen Sie die aktualisierte Topologie für die Mediensitzung fest.

  16. Führen Sie den zweiten Codierungsdurchlauf aus, indem Sie die Mediensitzung steuern und alle relevanten Ereignisse aus der Mediensitzung abrufen.

  17. Warten Sie auf das MEEndOfPresentation-Ereignis aus der Mediensitzung, und rufen Sie im Ereignishandler die Werte der Codierungseigenschaft vom Encoder ab, und legen Sie sie auf der Dateisenke fest. Weitere Informationen finden Sie unter Aktualisieren der Codierungseigenschaften in der Dateisenke im Tutorial: Single Pass Windows Media Encoding.

  18. Schließen Sie die Codierungssitzung, und fahren Sie sie herunter.

ASF-Komponenten auf Pipelineebene