Freigeben über


ASF-Webstreamwiedergabe in DirectShow

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow 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 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 . (Diese Struktur ist in der Dokumentation zum Windows Media Format SDK dokumentiert.) 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.

Jedes Medienbeispiel in einem Webstream enthält eine WMT_WEBSTREAM_SAMPLE_HEADER-Struktur , die in der Dokumentation zum Windows Media Format SDK dokumentiert ist. Die Struktur hat eine variable Länge, die von der Länge ihres wszURL-Elements abhängt. 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 CBaseRenderer::D oRenderSample-Methode muss der Filter die Struktur auf Informationen zum Webstream analysieren und dann die entsprechende Aktion ausführen. In der Regel wird die Datei auf dem Datenträger gespeichert und dann die Funktionen CreateUrlCacheEntry und CommitUrlCacheEntryW oder CommitUrlCacheEntryA aufgerufen, 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 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. 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 Dokumentation zum Windows Media Format SDK.

Lesen von ASF-Dateien in DirectShow