Partager via


Lecture de flux web ASF dans DirectShow

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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 dans les scénarios de lecture de fichiers via le filtre lecteur WM ASF , 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® Lecteur multimédia Windows série 9 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 . (Cette structure est documentée dans la documentation du Kit de développement logiciel (SDK) au format Windows Media.) 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.

Chaque exemple de média dans un flux web contient une structure WMT_WEBSTREAM_SAMPLE_HEADER , qui est documentée dans la documentation du Kit de développement logiciel (SDK) au format Windows Media. La structure 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 dans le flux.

Votre filtre de gestionnaire de flux web doit être basé sur la classe CBaseRenderer . Dans la méthode CBaseRenderer::D oRenderSample , 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 les fonctions CreateUrlCacheEntry etCommitUrlCacheEntryW ou CommitUrlCacheEntryA pour placer les fichiers dans le cache Explorer Internet. 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 un événement 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 les WMT_WEBSTREAM_FORMAT et les WMT_WEBSTREAM_SAMPLE_HEADER, consultez la documentation du Kit de développement logiciel (SDK) Windows Media Format.

Lecture de fichiers ASF dans DirectShow