Condividi tramite


Riproduzione flusso Web ASF in DirectShow

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Microsoft DirectShow supporta flussi Web negli scenari di riproduzione dei file tramite il filtro lettore ASF WM , ma è necessario scrivere un filtro DirectShow personalizzato per acquisire e rendere persistente il flusso.

Nota

Per riprodurre flussi Web nel contenuto in streaming da un server che esegue Windows Media Services, usare il controllo ActiveX® serie 9 Lettore multimediale Windows incorporato in una pagina Web.

 

Quando viene specificato un file contenente flussi di tipo WMMEDIATYPE_FileTransfer, il lettore ASF WM creerà un pin di output per esso. Il blocco di formato sarà una struttura WMT_WEBSTREAM_FORMAT . Questa struttura è documentata nella documentazione di Windows Media Format SDK. Se non è disponibile alcun filtro downstream che può gestire tale tipo di supporto, il pin rimarrà non connesso, ma il file continuerà a riprodurre l'audio e/o i flussi video.

Ogni esempio multimediale in un flusso Web contiene una struttura WMT_WEBSTREAM_SAMPLE_HEADER , documentata nella documentazione di Windows Media Format SDK. La struttura ha una lunghezza variabile a seconda della lunghezza del membro wszURL . Il puntatore ai dati di esempio punta inizialmente a questa struttura e è necessario avanzare il puntatore oltre la struttura per accedere ai dati effettivi nel flusso.

Il filtro del gestore di flusso Web deve essere basato sulla classe CBaseRenderer . Nel metodo CBaseRenderer::D oRenderSample , il filtro dovrà analizzare la struttura per informazioni sul flusso Web e quindi eseguire l'azione appropriata. In genere, ciò comporta il salvataggio del file su disco e quindi la chiamata alle funzioni CreateUrlCacheEntry e CommitUrlCacheEntryW o CommitUrlCacheEntryA per inserire i file nella cache di Internet Explorer. Il filtro deve gestire i file multipart, ovvero i file più grandi di un esempio e devono gestire anche i comandi di rendering, specificati dal membro WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType . Il filtro invia un evento EC_OLE_EVENT all'applicazione, insieme al testo della stringa WMT_WEBSTREAM_SAMPLE_HEADER.wszURL che contiene il nome del file da eseguire per il rendering. L'applicazione fa quindi in modo che il browser visualizzi la pagina specificata. Se il flusso Web è stato creato correttamente, il file deve essere già presente nella cache.

Per altre informazioni su WMT_WEBSTREAM_FORMAT e WMT_WEBSTREAM_SAMPLE_HEADER, vedere la documentazione di Windows Media Format SDK.

Lettura dei file ASF in DirectShow