ASF-Webstreamwiedergabe in DirectShow
Microsoft DirectShow unterstützt Webstreams 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. (Diese Struktur ist in der Dokumentation Windows Media Format SDK dokumentiert.) Wenn kein Downstreamfilter verfügbar ist, der diesen Medientyp verarbeiten kann, bleibt die Stecknadel nicht verbunden, aber die Datei gibt weiterhin die Audio- und/oder Videodatenströme wieder.
Jedes Medienbeispiel in einem Webstream enthält eine WMT _ WEBSTREAM _ SAMPLE _ HEADER-Struktur, die in der Dokumentation Windows Media Format SDK dokumentiert ist. Die -Struktur hat abhängig von der Länge des wszURL-Members eine variable Länge. 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 CBaseRenderer::D oRenderSample-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 der Funktionen CreateUrlCacheEntry und CommitUrlCacheEntryW oder CommitUrlCacheEntryA, 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 render-Befehle verarbeiten, die vom WMT _ WEBSTREAM _ SAMPLE _ HEADER.wSampleType-Member angegeben werden. Der Filter sendet ein EC _ OLE _ EVENT-Ereignis 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 WMT _ WEBSTREAM _ FORMAT und WMT _ WEBSTREAM SAMPLE HEADER finden Sie _ in der Windows Media Format _ SDK-Dokumentation.