Aller au contenu principal

Regarder des Flux M3U8 dans VLC Expliqué

Vous pouvez regarder un flux vidéo en utilisant le lecteur VLC lorsque vous avez une URL .m3u8 car VLC est conçu pour comprendre et implémenter le protocole HTTP Live Streaming (HLS). Le fichier .m3u8 est essentiellement la liste de lecture ou le manifeste que HLS utilise pour décrire le flux.

Voici une explication détaillée du pourquoi et du comment cela fonctionne :

1. Qu'est-ce que le HLS (HTTP Live Streaming) ?

  • HLS est un protocole de diffusion vidéo en continu (streaming) développé par Apple. C'est l'un des protocoles les plus largement utilisés pour diffuser des vidéos en direct et à la demande sur Internet.
  • Il fonctionne en découpant le flux vidéo et audio en petits morceaux courts (typiquement quelques secondes) appelés segments média. Ces segments sont généralement au format MPEG-2 Transport Stream (.ts), bien que d'autres formats comme le fMP4 (MP4 fragmenté) soient également utilisés maintenant.
  • Ces segments média sont ensuite servis via HTTP (Hypertext Transfer Protocol) standard à partir d'un serveur web classique ou d'un réseau de diffusion de contenu (CDN).

2. Qu'est-ce que le Fichier .m3u8 ?

  • Le fichier .m3u8 est un fichier texte brut qui sert de liste de lecture ou de manifeste pour le flux HLS.
  • Il contient une séquence d'URI (URLs ou chemins relatifs) qui pointent vers les véritables segments média vidéo (.ts, etc.) qui composent le flux.
  • En plus des URIs des segments, le fichier .m3u8 contient diverses balises (lignes commençant par #) qui fournissent des métadonnées sur le flux et contrôlent le comportement de lecture.

Balises Clés dans une Liste de Lecture M3U8 :

  • #EXTM3U : Indique qu'il s'agit d'un fichier de liste de lecture Extended M3U.
  • #EXT-X-VERSION : Spécifie la version de compatibilité du protocole HLS.
  • #EXT-X-TARGETDURATION : Indique la durée maximale de tout segment média dans la liste de lecture. Les lecteurs l'utilisent pour estimer la fréquence à laquelle vérifier les mises à jour de la liste de lecture (surtout pour les flux en direct).
  • #EXTINF:<duration>,[<title>] : Décrit la durée du segment média qui suit.
  • <URI> : La ligne après #EXTINF est l'URI du fichier de segment média réel (par exemple, segment1.ts, chemin/vers/chunk_00001.ts).
  • #EXT-X-ENDLIST : Cette balise n'apparaît que dans les listes de lecture pour les flux Vidéo à la demande (VOD). Elle indique qu'il n'y a plus de segments à charger et que le flux a une fin définie. Elle est absente dans les listes de lecture de flux en direct, indiquant que de nouveaux segments seront ajoutés au fil du temps.
  • #EXT-X-MEDIA-SEQUENCE : Pour les flux en direct, cette balise indique le numéro de séquence du premier segment dans la liste de lecture. Les lecteurs l'utilisent pour suivre les segments qu'ils ont déjà traités lorsque la liste de lecture est mise à jour.
  • #EXT-X-STREAM-INF : Cette balise est utilisée dans une liste de lecture principale (ou liste de lecture variante). Une liste de lecture principale ne liste pas directement les segments, mais liste d'autres listes de lecture .m3u8, chacune représentant une qualité ou un débit différent du flux (par exemple, une liste de lecture pour 1080p, une pour 720p, une pour 480p). C'est crucial pour la Diffusion à débit adaptatif.

3. Comment VLC Utilise l'URL .m3u8

Lorsque vous donnez à VLC une URL .m3u8 (via Média > Ouvrir un flux réseau...), voici le processus détaillé que VLC suit :

  1. Demander la Liste de Lecture : VLC effectue une requête HTTP GET standard à l'URL .m3u8 fournie.
  2. Télécharger le Fichier de Liste de Lecture : Le serveur web (ou le CDN) répond en envoyant le contenu du fichier .m3u8 à VLC.
  3. Analyser la Liste de Lecture : VLC lit et analyse le contenu texte du fichier .m3u8.
    • Il identifie la version HLS, la durée cible, et recherche d'autres balises de contrôle.
    • S'il s'agit d'une liste de lecture principale (#EXT-X-STREAM-INF) : VLC examine les listes de lecture variantes listées et leurs informations associées sur la bande passante/résolution. En fonction de vos préférences, des conditions réseau et des capacités du processeur, il sélectionne la liste de lecture variante la plus appropriée (par exemple, la liste de lecture 1080p). Il télécharge ensuite ce fichier de liste de lecture .m3u8 sélectionné.
    • S'il s'agit d'une liste de lecture média (liste #EXTINF et URIs de segments) : VLC lit la liste des segments média (.ts, etc.) et leurs durées.
  4. Identifier et Mettre les Segments en File d'Attente : VLC a maintenant la liste des segments média qu'il doit lire. Il commence à construire une file d'attente de segments à télécharger.
  5. Télécharger les Segments Média : VLC effectue des requêtes HTTP GET séquentielles pour les URL des segments média listés dans la liste de lecture, en commençant par le segment approprié (pour les VOD, généralement le premier ; pour le direct, il peut commencer par les derniers segments pour minimiser la mise en mémoire tampon).
  6. Tamponner et Décoder : Pendant que VLC télécharge les segments, il les met en mémoire tampon (buffer). Une fois qu'il a suffisamment de données en mémoire tampon, il commence à décoder les données audio et vidéo contenues dans les segments.
  7. Lecture : VLC lit les segments décodés dans l'ordre où ils étaient listés dans la liste de lecture.
  8. Gestion des Flux en Direct (Mises à Jour de la Liste de Lecture) : Si le fichier .m3u8 ne contient pas de #EXT-X-ENDLIST (indiquant un flux en direct), VLC re-télécharge périodiquement la liste de lecture .m3u8 en fonction de #EXT-X-TARGETDURATION ou d'une autre logique interne. Le serveur hébergeant le flux ajoute de nouveaux segments à la fin de la liste de lecture au fur et à mesure qu'ils sont générés. Lorsque VLC re-télécharge la liste de lecture mise à jour, il la compare à la version précédente, identifie les nouveaux segments à l'aide de #EXT-X-MEDIA-SEQUENCE et de la liste des segments, et ajoute ces nouveaux segments à sa file d'attente de téléchargement et de lecture. Ce processus continu de récupération des listes de lecture mises à jour et des nouveaux segments est ce qui crée l'expérience de diffusion "en direct".
  9. Gestion des VOD (Fin du Flux) : Si le fichier .m3u8 contient #EXT-X-ENDLIST, VLC sait que le flux a une durée finie. Il téléchargera et jouera tous les segments listés dans la liste de lecture jusqu'à atteindre la fin, puis la lecture s'arrête.
  10. Commutation Adaptative (si applicable) : Si VLC lit un flux à partir d'une liste de lecture principale, il surveille en permanence le débit réseau et les performances de l'appareil. Si le réseau ralentit, il peut demander au serveur d'arrêter d'envoyer des segments de la liste de lecture actuelle (par exemple, 1080p) et de commencer à télécharger des segments d'une liste de lecture à débit inférieur (par exemple, 720p) listée dans la liste de lecture principale. Inversement, si le réseau s'améliore, il peut passer à une liste de lecture à débit supérieur. Cette commutation se fait de manière transparente (ou avec une interruption minimale) car les segments sont courts et les points de transition sont gérés par le protocole.

En Résumé

VLC peut lire les URL .m3u8 car c'est un lecteur multimédia sophistiqué qui comprend le protocole HLS. Le fichier .m3u8 agit comme l'index ou la table des matières du flux, indiquant à VLC où trouver les petits morceaux vidéo (segments) qui constituent la vidéo complète. VLC télécharge cet index, puis procède au téléchargement et à la lecture des segments listés via HTTP standard, reconstruisant ainsi efficacement le flux vidéo continu à partir de ces pièces individuelles.

Pour regarder un flux M3U8 dans VLC :

  1. Ouvrez VLC.
  2. Allez dans Média.
  3. Sélectionnez Ouvrir un flux réseau....
  4. Collez l'URL .m3u8 dans le champ prévu à cet effet.
  5. Cliquez sur Lire.

VLC effectuera alors les étapes décrites ci-dessus pour récupérer et lire le flux.