Webstreamwiedergabe in DirectShow

Microsoft DirectShow unterstützt Webstreams (weitere Informationen finden Sie unter Web Streams) in Dateiwiedergabeszenarien über den WM ASF-Readerfilter. Sie müssen jedoch einen eigenen DirectShow-Filter schreiben, um den Stream zu erfassen und zu speichern.

Hinweis

Um Webstreams in Inhalten wiederzugeben, die von einem Server gestreamt werden, auf dem Windows Media-Dienste ausgeführt wird, verwenden Sie das ActiveX®-Steuerelement der Windows Media Player 9-Serie, das in eine Webseite eingebettet ist.

Wenn eine Datei mit Streams vom Typ WMMEDIATYPE FileTransfer angegeben _ wird, erstellt der WM ASF-Reader einen Ausgabepin dafür. Der Formatblock ist eine WMT _ WEBSTREAM _ FORMAT-Struktur. Wenn kein Downstreamfilter verfügbar ist, der diesen Medientyp verarbeiten kann, bleibt der Pin nicht verbunden, aber die Datei gibt weiterhin die Audio- und/oder Videostreams wieder.

Es ist wichtig zu verstehen, dass jedes Medienbeispiel in einem Webstream eine WMT _ WEBSTREAM _ SAMPLE _ HEADER-Struktur enthält, die abhängig von der Länge des wszURL-Members eine variable Länge aufweist. Der Zeiger auf die Beispieldaten zeigt zunächst auf diese Struktur, und Sie müssen den Zeiger über die Struktur hinaus vorrücken, um auf die tatsächlichen Daten im Stream zuzugreifen. Ihr Webstreamhandlerfilter sollte auf der CBaseRenderer-Klasse basieren. In der DoRenderSample-Methode muss der Filter die Struktur auf Informationen zum Webstream analysieren und dann die entsprechende Aktion ausführen. In der Regel umfasst dies das Speichern der Datei auf dem Datenträger und das anschließende Aufrufen von CommitUrlCacheEntry und CreateUrlCacheEntry, um die Dateien im Internet Explorer Cache zu platzieren. Der Filter muss mehrteilige Dateien verarbeiten, d. h. Dateien, die größer als ein Beispiel sind, und renderbefehle verarbeiten, die vom WMT _ WEBSTREAM _ SAMPLE _ HEADER.wSampleType-Member angegeben werden. Der Filter sendet ein EC _ OLE _ EVENT zusammen mit dem Text der WMT _ WEBSTREAM SAMPLE _ _ HEADER.wszURL-Zeichenfolge, die den Namen der zu rendernden Datei enthält, an die Anwendung. Die Anwendung bewirkt dann, dass der Browser die angegebene Seite anzeigt. Wenn der Webstream ordnungsgemäß erstellt wurde, sollte sich die Datei bereits im Cache befinden.

Weitere Informationen zu CBaseRenderer, DoRenderSample und EC OLE _ _ EVENT finden Sie in der DirectShow SDK-Dokumentation.

Web Streams