Wiedergeben von Mediendateien mit Media Foundation

In diesem Tutorial wird gezeigt, wie Mediendateien mithilfe des Mediensitzungsobjekts wiedergegeben werden.

Voraussetzungen

Bevor Sie dieses Thema lesen, sollten Sie mit den folgenden Media Foundation-Konzepten vertraut sein:

Hinweis

In diesem Thema wird nicht beschrieben, wie Dateien wiedergegeben werden, die durch digital Rights Management (DRM) geschützt sind. Informationen zu DRM in Microsoft Media Foundation finden Sie unter Wiedergeben geschützter Mediendateien.

 

Übersicht

Die folgenden Objekte werden verwendet, um eine Mediendatei mit der Mediensitzung wiederzugeben:

  • Eine Medienquelle ist ein Objekt, das eine Mediendatei oder eine andere Quelle von Mediendaten analysiert. Die Medienquelle erstellt Streamobjekte für jeden Audio- oder Videodatenstrom in der Datei. Decoder konvertieren codierte Mediendaten in unkomprimiertes Video und Audio.
  • Der Quelllöser erstellt eine Medienquelle aus einer URL.
  • Der enhanced Video Renderer (EVR) rendert Videos auf dem Bildschirm.
  • Der Streaming Audio Renderer (SAR) rendert Audio auf einem Lautsprecher oder einem anderen Audioausgabegerät.
  • Eine Topologie definiert den Datenfluss von der Medienquelle zu EVR und SAR.
  • Die Mediensitzung steuert den Datenfluss und sendet status Ereignisse an die Anwendung. Dieser Prozess wird anhand des folgenden Diagramms veranschaulicht.

Diagramm der Wiedergabe mithilfe der Mediensitzung

Es folgt eine allgemeine Übersicht über die Schritte, die zum Wiedergeben einer Mediendatei mithilfe der Mediensitzung erforderlich sind:

  1. Rufen Sie die MFStartup-Funktion auf, um die Media Foundation-Plattform zu initialisieren.

  2. Rufen Sie MFCreateMediaSession auf, um eine neue instance der Mediensitzung zu erstellen.

  3. Verwenden Sie den Quelllöser, um eine Medienquelle zu erstellen. Weitere Informationen finden Sie unter Verwenden des Quellre resolvers.

  4. Erstellen Sie eine Topologie, die die Medienquelle mit evr und SAR verbindet. In diesem Schritt erstellt die Anwendung eine partielle Topologie, die die Decoder nicht enthält. Weitere Informationen finden Sie unter Erstellen von Wiedergabetopologien.

  5. Rufen Sie IMFMediaSession::SetTopology auf, um die Topologie in der Mediensitzung festzulegen.

  6. Verwenden Sie die IMFMediaEventGenerator-Schnittstelle , um Ereignisse aus der Mediensitzung abzurufen.

  7. Rufen Sie IMFMediaSession::Start auf, um die Wiedergabe zu starten. Nachdem die Wiedergabe gestartet wurde, können Sie sie anhalten, indem Sie IMFMediaSession::P ause aufrufen, oder sie beenden, indem Sie IMFMediaSession::Stop aufrufen.

  8. Wenn die Anwendung beendet wird, geben Sie Ressourcen frei:

    1. Rufen Sie IMFMediaSession::Close auf, um die Mediensitzung zu schließen. Diese Methode ist asynchron. Nach Abschluss sendet die Mediensitzung ein MESessionClosed-Ereignis . Dann ist es sicher, die verbleibenden Schritte auszuführen.
    2. Rufen Sie IMFMediaSource::Shutdown auf, um die Medienquelle herunterzufahren.
    3. Rufen Sie IMFMediaSession::Shutdown auf, um die Mediensitzung zu beenden.
    4. Rufen Sie MFShutdown auf, um die Media Foundation-Plattform herunterzufahren.

Die folgenden Abschnitte zeigen ein vollständiges Codebeispiel:

Mediensitzung

Audio-/Videowiedergabe