Verwenden des Senkenschreibers

Übersicht

Dateicontainertypen

Der Senkenschreiber verfügt über integrierte Unterstützung für mehrere Dateicontainertypen. Eine vollständige Liste finden Sie unter MF_TRANSCODE_CONTAINERTYPE. Sie können zusätzliche Containertypen unterstützen, indem Sie eine benutzerdefinierte Mediensenke schreiben. Der Dateicontainer wird angegeben, wenn Sie eine neue instance des Senkenschreibers erstellen.

Streamformate

Für jeden Stream muss die Anwendung Folgendes angeben.

  • Das Eingabeformat ist das Format, das die Anwendung an den Senkenschreiber sendet.
  • Das Ausgabeformat ist das Format, das in die Datei geschrieben wird.

Die Eingabe- und Ausgabeformate können entweder komprimiert oder unkomprimiert sein. Der Senkenschreiber unterstützt die folgenden Kombinationen:

  • Unkomprimierte Eingabe mit komprimierter Ausgabe. Dies ist der typische Fall und wird für Codierungs- oder Transcodierungsszenarien verwendet. Es muss ein Microsoft Media Foundation-Encoder verfügbar sein, der den Eingabetyp akzeptiert und in den Ausgabetyp codiert.
  • Komprimierte Eingabe mit identischer Ausgabe. Verwenden Sie diese Kombination, um eine Datei ohne Transcodierung zu remuxen.
  • Unkomprimierte Eingabe mit identischer Ausgabe. Verwenden Sie diese Kombination, um unkomprimierte Audio- oder Videodaten in einen Dateicontainer zu schreiben.

Der Senkenschreiber unterstützt keine Größenänderung von Videos, Bildfrequenzkonvertierung oder Audio-Resampling, es sei denn, diese Funktionen werden vom Encoder bereitgestellt. Andernfalls kann die Anwendung digitale Signalprozessoren verwenden, um die Eingabedaten zu konvertieren, bevor die Daten an die

Erstellen des Senkenschreibers

Es gibt zwei Funktionen, die den Senkenschreiber erstellen:

Wenn Sie eine der integrierten Mediensenken verwenden, ist die MFCreateSinkWriterFromURL-Funktion vorzuziehen, da der Aufrufer die Mediensenke nicht konfigurieren muss.

Die MFCreateSinkWriterFromURL-Methode bietet mehrere Optionen zum Angeben des Typs des Dateicontainers. Im einfachsten Fall verwendet die Funktion die Dateinamenerweiterung in der URL, um den Dateicontainer auszuwählen. Weitere Informationen finden Sie auf der Funktionsreferenzseite.

Der folgende Code gibt beispielsweise den Dateinamen "output.wmv" für die URL an. Basierend auf der Dateinamenerweiterung lädt der Senkenschreiber die ASF-Mediensenke , um eine ASF-Datei (Advanced Systems Format) zu erstellen.

    HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);

Im Fall von MFCreateSinkWriterFromMediaSink wird der Dateityp durch die Mediensenke bestimmt.

Sink Writer