Erstellen einer Topologie für die Two-Pass Windows Mediencodierung

Zweipass-Codierungsmodi werden von bestimmten Medienencodern Windows und Media Foundation Pipelineebene unterstützt. Die Anwendung muss die Codierungstopologie ähnlich wie bei der Single-Pass-Codierung konfigurieren und einrichten. Im 2-Pass-Codierungsmodus muss die Anwendung die Codierungssitzung jedoch zweimal ausführen. Beim ersten Durchlauf sammelt der Encoder Informationen zum Inhalt des Streams. Im zweiten Durchgang wird mithilfe der beim ersten Durchgang erfassten Informationen die endgültige Ausgabedatei generiert. Durch die doppelte Verarbeitung der Beispiele für den Stream optimiert die Zwei-Durchlauf-Codierung den Codierungsprozess und erzeugt codierte Dateien höherer Qualität. Codierungsmodi mit zwei Durchläufen können nicht in Livestreams verwendet werden.

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

Das Erstellen einer Codierungstopologie für die Codierung mit zwei Durchgangen ähnelt dem Einzelpassmodus. In der folgenden Liste sind die wichtigsten Unterschiede aufgeführt.

  • Die Encoderkonfiguration muss die MFPKEY _ PASSESUSED-Eigenschaft, die auf 2 festgelegt ist, und die MFPKEY _ VBRENABLED-Eigenschaft auf VARIANT _ TRUE enthalten. Dadurch werden die Funktionen des Encoders in zwei Durchgangsmodi filtert. Wenn Sie Aktivierungsobjekte verwenden, übergeben Sie diese Eigenschaften an MFCreateWMAEncoderActivate oder MFCreateWMVEncoderActivate.
  • Verwenden Sie für den ersten Durchgang eine Dummymediensenke im Ausgabeknoten, da die in diesem Durchgang generierten Beispiele nicht der endgültigen Datei hinzugefügt werden.
  • Fragen Sie für den zweiten Durchgang den Encoder nach den erforderlichen Eigenschaften nach der Codierung ab, und ersetzen Sie den Knoten der Dummymediensenke durch die ASF-Mediensenke, wenn diese Eigenschaften festgelegt sind.

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

Im folgenden Verfahren werden die Schritte zum Codieren Windows Medieninhalts in einem ASF-Container mithilfe eines Zwei-Durch-Durch-Codierungsmodus zusammengefasst.

  1. Erstellen Sie mithilfe des Quellre resolvers eine Medienquelle für die angegebene .

  2. Enumerieren Sie die Streams in der Medienquelle.

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

  4. Erstellen Sie die Mediensenke.

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

  6. Konfigurieren Sie die Encoder mit den 2-Pass-Codierungseigenschaften.

  7. Erstellen Sie eine Teilcodierungstopologie, 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 Codierungspass 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 Typ der Codierung nach den folgenden Eigenschaften ab:

    Codierungstyp Eigenschaftenname
    Codierung der unkonstraineden Variablenbitrate _MFPKEY-PASSUSED
    MFPKEY _ VBRENABLED
    MFPKEY _ BAVG
    MFPKEY _ RAVG
    Codierung der variablen Bitrate mit eingeschränkter Spitzenrate _MFPKEY-PASSUSED
    MFPKEY _ VBRENABLED
    MFPKEY _ BAVG
    MFPKEY _ RAVG
    MFPKEY _ BMAX
    MFPKEY _ RMAX
  12. Erstellen Sie die ASF-Dateisenke, und fügen Sie abhängig von den Streams, die Sie in die endgültige Ausgabedatei ein include möchten, die erforderlichen Streamsenken hinzu.

  13. Legen Sie die Encodereigenschaften fest, die in Schritt 11 für die Dateisenke abgerufen wurden.

  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 Codierungspass aus, indem Sie die Mediensitzung steuern und alle relevanten Ereignisse aus der Mediensitzung abrufen.

  17. Warten Sie auf das MEEndOfPresentation-Ereignis aus der Media Session, und erhalten Sie im Ereignishandler die Codierungseigenschaftswerte vom Encoder, und legen Sie sie für die Dateisenke fest. Weitere Informationen finden Sie unter "Aktualisieren von Codierungseigenschaften in der Dateisenke" in Tutorial: Single Pass Windows Media Encoding.

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

ASF-Komponenten auf Pipelineebene