Erstellen der ASF-Dateisenke

Die ASF-Dateisenke ist eine Implementierung von IMFMediaSink , die von Media Foundation bereitgestellt wird und mit der eine Anwendung ASF-Mediendaten in einer Datei archivieren kann. Informationen zum Objektmodell und zur allgemeinen Verwendung von ASF-Mediensenken finden Sie unter ASF-Mediensenken.

Es gibt zwei Möglichkeiten, eine instance der ASF-Dateisenke zu erstellen. Sie können MFCreateASFMediaSink oder MFCreateASFMediaSinkActivate aufrufen.

Wenn Sie MFCreateASFMediaSink aufrufen, müssen Sie einen Bytedatenstrom für die Ausgabedatei angeben, in den die Senke den ASF-Inhalt während einer Codierungssitzung schreibt. Der angegebene Bytedatenstrom muss über suchbare und schreibbare Funktionen verfügen, andernfalls schlägt der MFCreateASFMediaSink-Aufruf mit dem E_FAIL Fehlercode fehl. Dieser Aufruf erstellt ein In-Process-Dateisenkenobjekt und gibt einen Zeiger auf die IMFMediaSink-Schnittstelle der Dateisenke zurück.

Wenn Sie MFCreateASFMediaSinkActivate aufrufen, müssen Sie die URL der Ausgabedatei angeben, in die die Dateisenke Mediendaten schreibt. In diesem Fall erstellt die Dateisenke intern den Bytedatenstrom. Die Funktion gibt einen Zeiger auf die IMFActivate-Schnittstelle der Dateisenke zurück. Beschreibung

Ziehen Sie MFCreateASFMediaSinkActivate anstelle von MFCreateASFMediaSink in Betracht, wenn Ihre Codierungstopologie wie folgt konzipiert ist:

  • Die Codierungstopologie ist für den geschützten Medienpfad (Protected Media Path, PMP) vorgesehen, und die Dateisenke wird prozessintern verwendet.

  • Der Ausgabeknoten der Topologie wird mithilfe des zurückgegebenen Zeigers auf das activate-Objekt der Dateisenke erstellt, und Ihre Anwendung verfolgt die Datenströme in der Dateisenke anhand der Datenstromnummern nach.

    Hinweis

    Sie können die Dateisenke aktivieren, indem Sie IMFActivate::ActivateObject aufrufen. Sie müssen das Objekt jedoch nicht explizit aktivieren. Die Mediensitzung verfolgt das Aktivierungsobjekt und aktiviert die Dateisenke automatisch während der Codierungssitzung.

     

  • Die Datenstrominformationen werden im ContentInfo-Objekt konfiguriert. Im nächsten Unterabschnitt nicht enthalten.

Nach dem Erstellen der ASF-Dateisenke muss sie vor dem Erstellen der Topologie konfiguriert werden. Die Dateisenke muss die folgenden Informationen kennen, um die Ausgabedatei zu generieren.

  • Grundlegende Datenstrominformationen
  • Informationen zum Codierungsmodus
  • Metadaten

Die Dateisenke implementiert das ASF ContentInfo-Objekt und macht die IMFASFContentInfo-Schnittstelle verfügbar, damit eine Anwendung sie verwenden kann, um Informationen im Zusammenhang mit den Streams und der Codierung festzulegen. Abhängig von der Funktion, die Sie zum Erstellen der Dateisenke aufgerufen haben, gibt es zwei Möglichkeiten, einen Verweis auf die IMFASFContentInfo-Schnittstelle zu erhalten.

  • Wenn Sie die MFCreateASFMediaSink-Funktion aufrufen, muss die Anwendung die IMFASFContentInfo-Schnittstelle abfragen, indem sie IMFMediaSink::QueryInterface für die zurückgegebene Dateisenke aufruft.
  • Wenn Sie MFCreateASFMediaSinkActivate aufrufen, erwartet diese Funktion, dass Sie vor dem Aufruf über ein vollständig konfiguriertes ContentInfo-Objekt verfügen. Dazu müssen Sie ein leeres ContentInfo-Objekt erstellen, indem Sie MFCreateASFContentInfo aufrufen und es dann mit allen erforderlichen Informationen konfigurieren. Übergeben Sie das konfigurierte ContentInfo-Objekt an MFCreateASFMediaSinkActivate , um einen Zeiger auf das Senkenaktivierungsobjekt zu erhalten. Sie können die Dateisenke nicht mithilfe des zurückgegebenen Aktivierungsobjekts aktivieren und dann alle Datenstrom- oder Codierungsinformationen ändern.

Informationen zum Konfigurieren von Senkenstreams und bestimmten Eigenschaften finden Sie in den folgenden Themen:

ASF-Mediensenken

ASF-Komponenten auf Pipelineebene

ASF-Unterstützung in Media Foundation