Lecture de flux web dans DirectShow

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par le lecteur source et l’enregistreurrécepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Microsoft DirectShow prend en charge les flux web (voir Web Streams 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 des flux Web dans du contenu diffusé à partir d’un serveur exécutant Windows Media Services, utilisez le contrôle ActiveX® série 9 Lecteur multimédia Windows incorporé dans une page Web.

 

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

Il est important de comprendre que chaque exemple de média dans un flux Web contient une structure WMT_WEBSTREAM_SAMPLE_HEADER , dont la longueur varie 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 dans le 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 les fichiers en plusieurs parties, c’est-à-dire les fichiers dont la taille est supérieure à un exemple, ainsi que 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 du Kit de développement logiciel (SDK) DirectShow.

Flux web