Partager via


Lecture de fichiers à partir d’une source réseau

[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.]

La lecture à partir d’un réseau n’est pas fondamentalement différente de la lecture d’un fichier local. L’application transmet l’URL à la méthode IWMReader::Open de l’objet lecteur, et l’objet lecteur gère les détails des protocoles réseau. L’objet reader utilise la gestion intelligente des mémoires tampons pour fournir la lecture la plus fluide possible. Si l’application a besoin d’un contrôle accru sur les paramètres réseau de l’objet lecteur, ceux-ci sont disponibles via les interfaces IWMReaderNetworkConfig et IWMReaderNetworkConfig2 .

Le contenu d’une source réseau appartient à l’une des deux catégories suivantes :

  • Streaming. Les données sont transmises juste à temps pour être lues sur l’ordinateur local. Les serveurs exécutant Windows Media Services peuvent fournir des données de streaming. Si du contenu à débit binaire multiple (MBR) est diffusé en continu, le client peut demander un débit binaire différent du serveur au fur et à mesure que la diffusion en continu progresse.
  • Téléchargé. Toutes les données sont transmises aussi rapidement que possible afin qu’elles puissent être enregistrées sous forme de fichier sur l’ordinateur local. Les serveurs web fournissent des données téléchargées. Il n’y a aucune communication entre le client et le serveur après le début du téléchargement.

Lorsque l’objet lecteur télécharge un fichier à partir d’un serveur Web, il utilise une technique appelée diffusion en continu progressive, qui permet à un lecteur de commencer à afficher le contenu avant la fin du téléchargement. Les données sont mises en mémoire tampon pour fournir un flux ininterrompu de données au lecteur. Des informations telles que le taux de transfert et la durée du contenu sont utilisées pour déterminer la durée de mise en mémoire tampon des données avant de les transmettre au lecteur.

Pour ouvrir un fichier ou un flux sur un réseau, appelez la méthode IWMReader::Open de l’objet reader avec l’URL appropriée. Open est un appel asynchrone, donc il retourne immédiatement. Lorsque la source est prête pour la lecture, l’objet reader envoie une notification WMT_OPENED à la méthode de rappel IWMStatusCallback::OnStatus de l’application . À ce stade, l’application peut interroger le lecteur pour le mode de remise en appelant IWMReaderAdvanced2::GetPlayMode. Pour le contenu réseau, cette méthode retourne soit WMT_PLAY_MODE_DOWNLOAD, indiquant le contenu téléchargé, soit WMT_PLAY_MODE_STREAMING, indiquant le contenu diffusé en continu.

Pour commencer à lire le fichier ou le flux, appelez la méthode IWMReader::Start . Le lecteur envoie une notification WMT_BUFFERING_START lorsqu’il commence à mettre en mémoire tampon le contenu, et une notification WMT_BUFFERING_STOP lorsque la mise en mémoire tampon est terminée. Pendant que le lecteur met en mémoire tampon le contenu (autrement dit, entre ces deux notifications), vous souhaiterez peut-être afficher la progression de la mise en mémoire tampon à l’utilisateur. La méthode IWMReaderAdvanced2::GetBufferProgress retourne le pourcentage de données qui ont été mises en mémoire tampon et la durée estimée restante. Pour le contenu téléchargé, vous pouvez également appeler IWMReaderAdvanced2::GetDownloadProgress pour obtenir la progression du téléchargement. Appelez ces méthodes à plusieurs reprises pour mettre à jour votre affichage, jusqu’à ce que la mise en mémoire tampon soit terminée. La mise en mémoire tampon peut se produire à nouveau pendant la lecture, en raison de facteurs tels que la congestion du réseau. Si cela se produit, l’application reçoit une autre notification WMT_BUFFERING_START.

Lorsque l’objet lecteur commence à lire le contenu, il envoie une notification WMT_STARTED. Comme chaque exemple est décodé et devient disponible pour le rendu, le lecteur le transmet à l’application via la méthode de rappel IWMReaderCallback::OnSample . À ce stade, le processus est le même que pour la lecture de fichiers locaux. Lorsque la lecture s’arrête, le lecteur envoie une notification WMT_END_OF_STREAMING.

Lecture de fichiers ASF