Share via


Verwenden von Medienquellen mit der Mediensitzung

Wenn Sie die Mediensitzung verwenden, um die Wiedergabe zu steuern, ist der Satz von Methoden, die Sie für eine Medienquelle aufrufen sollten, eingeschränkt. In diesem Abschnitt wird die Verwendung der Medienquelle in Verbindung mit der Mediensitzung beschrieben.

Im Folgenden finden Sie die grundlegenden Schritte, die Ihre Anwendung ausführt:

  1. Erstellen Sie die Medienquelle. Verwenden Sie den Quelllöser, um eine Medienquelle zu erstellen. Weitere Informationen finden Sie unter Quellre resolver. Der Quelllöser gibt einen Zeiger auf die IMFMediaSource-Schnittstelle der Quelle zurück. (Wenn Sie eine benutzerdefinierte Medienquelle geschrieben haben, können Sie stattdessen eine benutzerdefinierte Erstellungsmethode bereitstellen.)

  2. Konfigurieren Sie die Präsentation. Um die Präsentation der Quelle zu konfigurieren, rufen Sie IMFMediaSource::CreatePresentationDescriptor auf. Sie können diese Kopie ändern, aber die Änderungen werden erst aktiv, wenn die Wiedergabe beginnt. Ändern Sie den Präsentationsdeskriptor während der Wiedergabe nicht. Weitere Informationen finden Sie unter Präsentationsdeskriptoren.

  3. Erstellen Sie eine Topologie, die die Medienquelle enthält. Weitere Informationen finden Sie unter Topologien.

  4. Verwenden Sie die Mediensitzung, um die Wiedergabe zu steuern. Die Mediensitzung ruft Methoden für die Medienquelle auf. Die Anwendung sollte derzeit keine Methoden für die Medienquelle aufrufen.

  5. Rufen Sie vor dem Freigeben der Medienquelle IMFMediaSource::Shutdown auf, um die Quelle herunterzufahren.

    Hinweis

    Wenn Sie die Sequencerquelle verwenden, verarbeitet die Sequencerquelle das Herunterfahren der Segmentquellen. Weitere Informationen finden Sie unter Sequencer Source.

     

Wenn Sie die Mediensitzung verwenden, sind die einzigen Methoden, die Sie für die Medienquelle aufrufen sollten, CreatePresentationDescriptor, GetCharacteristics und Shutdown. Dies gilt insbesondere für:

  • Rufen Sie " Start", "Anhalten" oder "Beenden" nicht auf. Diese Methoden sollten nur von der Mediensitzung aufgerufen werden.

  • Rufen Sie keine IMFMediaStream-Methoden auf.

  • Rufen Sie Ereignisse nicht direkt aus der Medienquelle oder einem der Streams ab. Die Mediensitzung muss diese Ereignisse empfangen, damit die Pipeline ordnungsgemäß funktioniert. Die Mediensitzung leitet alle Ereignisse weiter, die von der Anwendung benötigt werden.

Mediensitzung