Verwenden von Multimedia-Streams in Anwendungen

Hinweis

Diese APIs sind veraltet. Anwendungen sollten den Beispielgrabberfilter verwenden oder einen benutzerdefinierten Filter implementieren, um Daten aus einem DirectShow-Filterdiagramm abzurufen.

Die Multimediastreamingschnittstellen vereinfachen die Bearbeitung von Multimediadaten erheblich, indem sie die Abhängigkeit von bestimmten Merkmalen der Hardware- oder Softwarequelle entfernen und Unterstützung für alle Microsoft DirectX® Medienformate bereitstellen. Streams die Daten auf eine sehr hohe Ebene abstrahieren; -Anwendungen können sogar Daten aus einem Stream in einen anderen verschieben, ohne etwas über das Format der Daten zu wissen.

Führen Sie die folgenden Schritte aus, um einen Multimediastream zu erstellen.

  1. Erstellen Sie den Multimediastream. Die Methode zum Erstellen und Initialisieren des Streams ist architekturspezifisch. DirectShow unterstützt die IAMMultiMediaStream-Schnittstelle, die zum Initialisieren des Streams verwendet wird. Andere In-Process-Serverimplementierungen von IMultiMediaStream werden mithilfe verschiedener Mechanismen erstellt und initialisiert.
  2. Nachdem das Multimediastreamobjekt initialisiert wurde, verwendet die Anwendung QueryInterface, um die IMultiMediaStream-Schnittstelle für das Objekt abzurufen. Verwenden Sie diese Schnittstelle, um die Eigenschaften des Streams zu bestimmen und die Streams selbst aufzuzählen. Sie können einen bestimmten Stream abrufen, indem Sie die IMultiMediaStream::GetMediaStream-Methode mit einer bestimmten Zweck-ID aufrufen. MSPID _ PrimaryVideo und MSPID _ PrimaryAudio, die die primären Video- und Audiostreams darstellen, sind die am häufigsten verwendeten Zweck-IDs.
  3. Rufen Sie IUnknown::QueryInterface für eine Schnittstelle auf, die für den Medientyp des Streams spezifisch ist. Wenn Sie beispielsweise einen Videostream rendern möchten, rufen Sie dessen IDirectDrawMediaStream-Schnittstelle ab. Medienspezifische Schnittstellen definieren zusätzliche Methoden, die erforderlich sind, um die Funktionen eines Formats in vollem Umfang zu nutzen.
  4. Erstellen Sie ein oder mehrere Beispiele aus den Streamdaten. Jeder Medienstream unterstützt die IMediaStream::CreateSharedSample-Methode für die Beispielerstellung. Das resultierende Beispiel unterstützt die IStreamSample-Schnittstelle, die kontrolle über das Beispiel und seine Merkmale bietet. In der Regel unterstützt der Medienstream eine formatspezifische Methode für die Beispielerstellung, die leistungsstärker als die oben genannten IStreamSample-Methoden ist. IDirectDrawMediaStream kann z. B. Beispiele erstellen, die an eine gewünschte DirectDraw-Oberfläche und ein Ausschneiderechteck angefügt sind. In einigen Situationen müssen Sie Jedoch Daten verarbeiten, ohne ihr Datenformat zu kennen. Wenn Sie Daten unabhängig vom Format streamen möchten, verwenden Sie die IMediaStream::CreateSharedSample-Methode, um die Datenbeispiele zu erstellen.
  5. Starten Sie nach dem Erstellen aller gewünschten Streambeispiele den Stream, indem Sie die IMultiMediaStream::SetState-Methode aufrufen und das STREAMSTATE _ RUN-Flag als Parameter übergeben.
  6. Rufen Sie IStreamSample::Update auf, um das Streambeispiel zu aktualisieren. Wenn die IStreamSample::Update-Methode beendet wird, können Sie auf die Daten des Beispiels zugreifen. Wenn Sie einen bestimmten Ereignis- oder Funktionsaufruf auslösen möchten, wenn das Update zurückgegeben wird, übergeben Sie die entsprechenden Zeiger an die IStreamSample::Update-Methode.

Weitere Informationen zu den Multimediastreamingschnittstellen finden Sie unter Multimediastreaming.