Webstreamwiedergabe in DirectShow

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Sie wurde durch den Quellleser und den Senkenschreiber ersetzt. Quellleser und Senkenschreiber wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit den Quellleser und senkenden Writer anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

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

Hinweis

Zum Wiedergeben von Webstreams in Inhalten, die von einem Server mit Windows Media Services gestreamt werden, verwenden Sie das activeX-Steuerelement® der Windows Medienwiedergabe 9-Serie, das in eine Webseite eingebettet ist.

 

Wenn eine Datei mit Streams vom Typ WMMEDIATYPE_FileTransfer angegeben wird, erstellt der WM-ASF-Reader eine Ausgabenadel dafür. Der Formatblock ist eine WMT_WEBSTREAM_FORMAT-Struktur . Wenn kein nachgeschalteter Filter 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-Elements eine Variablelänge aufweist. Der Zeiger auf die Beispieldaten verweist zunächst auf diese Struktur, und Sie müssen den Zeiger über die Struktur hinausbringen, 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 besteht dies darin, die Datei auf dem Datenträger zu speichern und dann CommitUrlCacheEntry und CreateUrlCacheEntry aufzurufen, um die Dateien im Internet Explorer Cache zu platzieren. Der Filter muss mehrteilige Dateien behandeln, d. h. Dateien, die größer als ein Beispiel sind, und muss auch Renderbefehle behandeln, die vom WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType-Member angegeben werden. Der Filter sendet eine EC_OLE_EVENT zusammen mit dem Text der WMT_WEBSTREAM_SAMPLE_HEADER.wszURL-Zeichenfolge , die den Namen der zu renderden Datei enthält. 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 Dokumentation zum DirectShow SDK.

Webstreams