Le streaming en direct, appelé également vidéo en flux continu, est la transmission de données vidéo ou audio à un public via Internet au moment de la création de ces données.
Cet article s'articule autour des points suivants :
Contenu associé
Qu'est-ce que le streaming ?
Encodage en direct
Diffusion HTTP en direct
Qu'est-ce que MPEG-DASH?
MOV vs MP4
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
Le streaming est la méthode de transmission de données utilisée lorsque quelqu'un regarde une vidéo sur Internet. Il permet de délivrer progressivement un fichier vidéo, souvent à partir d'un emplacement de stockage distant. En transmettant quelques secondes du fichier à la fois via Internet, les appareils clients n'ont pas à télécharger la vidéo entière avant de commencer à la lire.
Le streaming en direct signifie que la vidéo diffusée est envoyée sur Internet en temps réel, sans avoir été enregistrée ni stockée au préalable. Aujourd'hui, les émissions télévisées, les flux de jeux vidéo et les vidéos de médias sociaux peuvent tous être diffusés en direct.
La différence entre le streaming standard et le streaming en direct est comparable à la différence entre deux acteurs, l'un récitant un monologue qu'il a appris, l'autre improvisant un discours. Pour le premier acteur, le contenu a été créé au préalable, stocké, puis relayé au public. Pour le deuxième, le public reçoit le contenu au moment où l'acteur le crée. Les choses sont identiques pour le streaming en direct.
Le terme streaming en direct fait généralement référence à des diffusions en direct : des connexions un-à-plusieurs qui sont envoyées à plusieurs utilisateurs à la fois. Les technologies de vidéoconférence telles que Skype, FaceTime et Google Hangouts Meet fonctionnent sur des protocoles de communication en temps réel (RTC) plutôt que sur les protocoles utilisés par les diffusions en direct un à plusieurs.
Voici les principales étapes qui se déroulent en coulisses pour un flux en direct :
Le streaming en direct commence par des données vidéo brutes : les informations visuelles capturées par une caméra. À l'intérieur du dispositif informatique auquel la caméra est connectée, ces informations visuelles sont représentées sous forme de données numériques : en d'autres termes, 1 et 0 au niveau le plus profond.
Ensuite, les données vidéo segmentées sont compressées et encodées. Les données sont compressées en supprimant les informations visuelles redondantes. Par exemple, si la première image de la vidéo affiche une personne parlant sur un fond gris, le fond gris n'a pas besoin d'être rendu pour les images suivantes qui ont le même arrière-plan.
La compression vidéo est comparable à l'ajout d'un nouveau meuble dans un salon. Il n'est pas nécessaire d'acheter un mobilier tout neuf quand vous ajoutez simplement une nouvelle chaise ou une table d'appoint. Vous pouvez tout simplement garder la disposition de la pièce à peu près à l'identique et changer un élément de mobilier à la fois, en faisant parfois des réarrangements plus importants si nécessaire. De même, toutes les images d'un flux vidéo ne doivent pas être rendues en totalité, mais uniquement les parties qui changent d'une image à l'autre, comme le mouvement des lèvres d'une personne.
« codage » fait référence au processus de conversion des données dans un nouveau format. Les données vidéo en streaming en direct sont encodées dans un format numérique interprétable reconnu par de nombreux appareils. Les normes d'encodage vidéo courantes sont les suivantes :
La vidéo comprend de nombreuses informations numériques, il faut donc plus de temps pour télécharger un fichier vidéo que pour télécharger un petit fichier PDF ou une simple image. Parce qu'il ne serait pas pratique d'envoyer toutes les données vidéo sur Internet en même temps, la vidéo en streaming est divisée en segments plus petits de quelques secondes.
Une fois le flux en direct segmenté, compressé et codé (des opérations qui ne prennent que quelques secondes), il doit être mis à la disposition des dizaines ou des millions de « viewers », les visionneurs qui souhaitent le regarder. Pour maintenir une haute qualité avec une latence minimale tout en servant le flux à plusieurs visionneurs à différents endroits, un CDN devra le distribuer.
Un RDC est un réseau distribué de serveurs qui met en cache et sert le contenu au nom d'un serveur d'origine. L'utilisation d'un RDC se traduit par des performances plus rapides, car les requêtes des utilisateurs n'ont plus à se rendre jusqu'au serveur d'origine mais peuvent être traitées par un serveur RDC situé à proximité. Le traitement des requêtes et la livraison de contenu effectués de cette manière réduisent également la charge de travail du serveur d'origine. Enfin, les RDC permettent de servir efficacement le contenu aux utilisateurs du monde entier, car leurs serveurs sont répartis partout dans le monde au lieu d'être regroupés dans une même zone géographique.
Un RDC mettra également en cache (c'est-à-dire en enregistrement temporaire) chaque segment du flux en direct, de sorte que la plupart des visionneurs recevront le flux en direct depuis le cache RDC au lieu de l'obtenir du serveur d'origine. Le flux en direct est ainsi plus proche du temps réel, même si les données mises en cache ont quelques secondes de retard, car il réduit le temps aller-retour (RTT) à destination et en provenance du serveur d'origine.
Le CDN envoie le flux en direct à tous les utilisateurs qui le regardent. L'appareil de chaque utilisateur reçoit, décode et décompresse les données vidéo segmentées. Enfin, un lecteur multimédia sur l'appareil de l'utilisateur (une application dédiée ou un lecteur vidéo intégré au navigateur) interprète les données comme des informations visuelles, et la vidéo est lue.
Supposons qu'Alice démarre une diffusion en direct sur son smartphone et que Bob, qui vit à l'autre bout du pays, se connecte sur le flux en direct depuis son smartphone avec quelques dizaines d'autres amis d'Alice. Alice démarre la diffusion en direct en dirigeant la caméra du smartphone sur son visage et en disant : « Bonjour tout le monde ! » Que doit-il se passer pour que la section « Bonjour tout le monde » de la vidéo parvienne à Bob de l'autre côté du pays et à toutes les autres personnes qui regardent ce flux ?
Premièrement, le smartphone d'Alice encodera et compressera ce petit segment de vidéo. Si Alice filme le flux en direct depuis sa cuisine, son mur de cuisine est enregistré comme première image de la vidéo, et les images suivantes laisseront le mur de côté car l'arrière-plan ne change pas.
Ensuite, l'application qu'Alice utilise enverra la version codée et compressée de son « Bonjour tout le monde » au CDN de l'application. Heureusement pour Bob, l'un des serveurs CDN n'est qu'à quelques kilomètres de chez lui, de sorte que la requête de son smartphone pour le premier segment de la diffusion en direct est traitée presque instantanément. D'autres personnes qui regardent le flux en direct peuvent subir plus ou moins de latence que Bob en fonction de leur emplacement géographique.
Le téléphone de Bob décode le segment vidéo et reconstruit les données compressées, ainsi le mur de la cuisine d'Alice apparaît sur chaque image. Enfin, quelques secondes seulement après qu'Alice a dit « Bonjour tout le monde » depuis sa cuisine située à l'autre bout du pays, son visage apparaît sur le smartphone de Bob et Bob voit et entend le bonjour d'Alice.
Bande passante : Tout point donné d'un réseau ne peut laisser passer qu'un certain volume de données à la fois. Cette mesure est appelée « bande passante ». Si un flux de données atteint un point du réseau où la quantité de données dépasse la capacité, cela crée un « point d'étranglement » parce que la livraison de données est bloquée et ralentie. Un point d'étranglement est similaire à un ralentissement de la circulation lorsque trop de voitures tentent d'emprunter une route à voie unique.
Si tous ceux qui regardent un flux obtiennent les données du flux à partir de leur point d'origine, le serveur d'origine et son infrastructure réseau environnante deviennent un point d'étranglement et le flux ralentit. Mais si la charge principale de la livraison de flux est déplacée vers un CDN, alors le point d'étranglement est éliminé.
Diffusion de contenu mondial :Les RDC sont distribués dans le monde entier, ils sont par conséquent en mesure de fournir du contenu à un public mondial. Un serveur d'origine situé à New York ne peut pas servir efficacement du contenu à un public milanais, surtout avec un contenu aussi lourd que des données vidéo. Toutefois, un RDC peut envoyer et servir du contenu depuis tout point de son réseau. Ainsi, une personne à Milan qui regarde un flux en direct émanant de New York peut obtenir ce flux à partir d'un serveur situé à Milan au lieu d'attendre qu'il se charge complètement depuis New York.
Réduction de la latence et du RTT : la diffusion de contenu à l'échelle mondiale à l'aide d'un CDN permet de réduire la latence pour les spectateurs du flux en direct en réduisant le RTT (temps d'aller-retour). L'aller-retour entre la requête et la réponse est plus court en termes de distance et de temps, car la requête d'un spectateur demandant un flux en direct n'a plus à parcourir l'ensemble du chemin jusqu'à la source d'origine du flux et les données de la diffusion n'ont plus à parcourir l'ensemble du chemin depuis le serveur d'origine. Cette approche permet ainsi de réduire les délais et contribue donc à maintenir le flux dans un état aussi proche que possible du « direct ».
Charge de travail : Pour répondre aux demandes de données des utilisateurs, le serveur utilise une certaine puissance de calcul. Un serveur seul peut être submergé s'il doit répondre à de nombreuses requêtes d'utilisateurs de données vidéo. Un RDC utilise des dizaines ou des centaines de serveurs qui peuvent prendre une grande partie de la charge de travail du serveur d'origine et le maintenir opérationnel.
Mise en cache : Un RDC met en cache chaque segment vidéo d'un flux en direct. Le RDC peut alors livrer les segments à partir du cache au lieu d'obtenir les données du serveur d'origine.
Servir un flux en direct à partir d'un cache semble être une contradiction : si le flux est en direct, comment le fait de le sauvegarder et de le livrer quelques secondes plus tard peut-il être plus rapide ? Un flux en direct mis en cache aura effectivement un petit retard par rapport au temps réel, mais il sera toujours plus rapide que s'il devait provenir du serveur d'origine. Le trajet aller-retour requête réponse prendrait si longtemps que le flux serait comparativement encore plus en retard. Avec la mise en cache CDN, les utilisateurs connaissent un temps de latence minimal.
Le Cloudflare RDC utilise une technique appelée Concurrent Streaming Acceleration (littéralement accélération du streaming simultanée) pour accélérer la stream Delivery en direct. Les autres flux ne peuvent pas servir un segment vidéo à plusieurs utilisateurs tant que le segment n'est pas complètement enregistré dans le cache. Le Cloudflare RDC, cependant, est capable de servir ces segments directement à plusieurs visionneurs à la fois pendant qu'ils chargent, en réduisant ainsi le temps d'attente des utilisateurs de précieuses secondes. En savoir plus sur la technique Concurrent Streaming Acceleration.