Lecture de flux web dans DirectShow

Microsoft DirectShow prend en charge les flux Web (voir Web Flux pour plus d’informations) dans les scénarios de lecture de fichiers via le filtre lecteur ASF WM, mais vous devez écrire votre propre filtre DirectShow pour capturer et conserver le flux.

Notes

Pour lire les flux web dans le contenu en cours de diffusion à partir d’un serveur exécutant Windows Media Services, utilisez le contrôle Lecteur multimédia Windows série 9 ActiveX ® incorporé dans une page Web.

 

Lorsqu’un fichier contenant des flux de type WMMEDIATYPE_FileTransfer, le lecteur ASF WM crée une broche de sortie pour celle-ci. Le bloc de format est une structure WMT_WEBSTREAM_FORMAT . Si aucun filtre en aval n’est disponible qui peut gérer ce type de média, l’épingle reste non connectée, mais le fichier lirea toujours les flux audio et/ou vidéo.

Il est important de comprendre que chaque exemple multimédia d’un flux web contient une structure WMT_WEBSTREAM_SAMPLE_HEADER , qui a une longueur variable en fonction de la longueur de son membre wszURL . Le pointeur vers les exemples de données pointe initialement vers cette structure et vous devez avancer le pointeur au-delà de la structure pour accéder aux données réelles du flux. Votre filtre de gestionnaire de flux web doit être basé sur la classe CBaseRenderer . Dans la méthode DoRenderSample , le filtre doit analyser la structure pour obtenir des informations sur le flux Web, puis effectuer l’action appropriée. En règle générale, cela implique d’enregistrer le fichier sur le disque, puis d’appeler CommitUrlCacheEntry et CreateUrlCacheEntry pour placer les fichiers dans le cache Internet Explorer. Le filtre doit gérer des fichiers à plusieurs parties, autrement dit, des fichiers supérieurs à un exemple et doivent également gérer les commandes de rendu, qui sont spécifiées par le membre WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType . Le filtre envoie une EC_OLE_EVENT à l’application, ainsi que le texte de la chaîne WMT_WEBSTREAM_SAMPLE_HEADER.wszURL qui contient le nom du fichier à afficher. L’application entraîne ensuite l’affichage de la page spécifiée par le navigateur. Si le flux web a été créé correctement, le fichier doit déjà se trouver dans le cache.

Pour plus d’informations sur CBaseRenderer, DoRenderSample et EC_OLE_EVENT, consultez la documentation DirectShow SDK.

Flux web