Note d'édition : ce qui suit est un article invité sponsorisé et rédigé par Luke Curley, l'un des créateurs de Media over Quic. Les points de vue, les perspectives techniques et les opinions exprimés ci-dessous n'engagent que lui et sont distincts des points de vue, des offres de produits et des spécifications techniques de Fastly.
Bonjour les fans de Fastly.
Je suis Luke, alias @kixelated, alias l'un des créateurs de Media over QUIC. Fastly aime mes articles sur MoQ et m'a sponsorisé pour en écrire d'autres. Pour une raison quelconque…
La subtilité, c'est qu'il existe deux copies de cet article :
Cet article normal sur MoQ et la Formule 1.
Un article déjanté sur Flash McQueen.
Faites votre choix. Nous allons découvrir les nombreuses façons dont vous pouvez utiliser MoQ sur une piste. Dans tous les cas, vous obtenez une image de voiture mal décalquée. Au moins, elle n'est pas générée par l'IA.

L'État de la course
Supposons que vous aimiez par-dessus tout la F1. Vous l'aimez énormément, mais cette petite chose qu'on appelle revenus disponibles vous empêche d'aller voir les courses.
Tôt ou tard, vous voudrez regarder la course depuis votre salon. Il nous faut un moyen de la diffuser en direct sur Internet pour le plaisir de vos mirettes.
La réponse au cours de la dernière décennie a été HLS/DASH. Prenez un flux média, divisez-le en segments de 0,5 s à 4 s de long et distribuez-les via HTTP. C'est ennuyeux, mais cela fonctionne, et Fastly le fait bien (ceci est une promotion sponsorisée).
Le problème, c'est que nous nous heurtons à un mur de latence :
La purge des médias par lots ajoute de la latence (0,5 s à 4 s).
La congestion du réseau entraîne le blocage en tête de file et la mise en mémoire tampon.
Chaque seconde de mise en mémoire tampon signifie encore plus de latence.
Ce mur de latence est la raison pour laquelle j'ai créé MoQ, alors que j'étais chez Twitch. L'objectif était de rendre les diffusions en direct plus interactives (et moins ennuyeuses). Diffuser les images et en abandonner occasionnellement au lieu de bloquer.
Aucune quantité de préfixes LL ou de marketing sur la latence ultra-faible ne pourra résoudre ce problème. Nous avons besoin d'un nouveau protocole pour éviter le blocage en tête de file, et ce, immédiatement.
MoQ pour les fans
Commençons par le sujet qui fâche. J'ai déjà déclaré par le passé que vous n'avez pas besoin de MoQ pour du contenu de haute qualité.
Et c'est vrai. Si vous voulez voir chaque image d'un streaming en direct, vous n'avez pas grand-chose à gagner avec MoQ. Vous avez tout intérêt à utiliser HLS/DASH avec une grande mémoire tampon pour lisser les aléas du réseau. Tout comme YouTube télécharge des minutes de vidéo à l'avance.
Évidemment, l'attente se traduira toujours par une meilleure qualité d'image, mais l'hypothèse est que certains utilisateurs préfèrent une latence plus faible au détriment de la qualité.

Souvent, tout l'intérêt de regarder un streaming en direct est de faire partie de l'histoire EN DIRECT, et non de voir chaque milliseconde du tour 392. C'est la raison même pour laquelle Twitch existe, l'interactivité est plus importante que la qualité.
Peut-être que l'utilisateur parie sur la course, publie sur les réseaux sociaux ou souhaite simplement être le premier au courant. C'est une sensation désagréable d'être à la dernière place. Savoir que vous êtes toujours au tour 392 alors que votre voisin est au tour 393.
Quoi qu'il en soit, ce ne serait pas vraiment un article technique si je n'expliquais pas comment cela fonctionne. MoQ peut accorder la priorité au contenu plus récent par rapport au contenu plus ancien (par ordre de dépendance). Ainsi, chaque spectateur peut choisir s'il y a un écart au milieu ou un écart à la fin.
Il y a un compromis ici. Mais c'est aussi toute la beauté de MoQ : il s'agit d'un curseur de latence configurable que vous pouvez augmenter ou diminuer.

REMARQUE : MoQ peut égaler la qualité/latence que vous attendez de HLS/DASH. Nous permettons simplement d'atteindre un seuil de latence plus bas.
MoQ pour les voitures
J'ai créé MoQ pour les fans, mais les entreprises insistent pour l'utiliser sur les voitures, sur les drones ou sur les bateaux.
L'un des défis du streaming en direct consiste à récupérer le contenu depuis le véhicule. Les réseaux cellulaires et satellitaires sont très instables. En réalité, je ne regarde pas la F1, mais lorsque j'en vois des extraits, les flux vidéo des caméras embarquées sont affreux.
Je suis une star de la vidéo, pas de la radio, mais j'imagine que c'est probablement dû au réseau. Il va y avoir des zones d'ombre, des interférences ou autre autour de la piste. L'une des réalités de la transmission du signal, c'est que vous allez devoir faire face à des périodes de bande passante élevée, faible et nulle.
Le flux provenant d'une voiture de F1 va utiliser quelque chose comme RTP sur UDP. Il existe de nombreuses approches différentes, mais en général, un éditeur RTP accorde à une image un délai d'environ 100 ms avant qu'elle ne soit définitivement abandonnée. Ainsi, une brève interférence de signal entraîne des artefacts, du déchirement d'image ou un gel de la vidéo.
Mais MoQ n'abandonne pas.
Comme je l'ai dit plus tôt, MoQ privilégie plutôt la transmission des éléments les plus récents (par ordre de dépendance). Les anciens éléments ne sont pas supprimés, ils sont mis en file d'attente dans la RAM (jusqu'à un TTL). Lorsque la bande passante se rétablit, nous pouvons récupérer les anciennes séquences au lieu de les perdre pour toujours.

Chaque abonné MoQ décide indépendamment du temps d'attente pour chaque image :
Le streaming en direct peut attendre jusqu'à 1 seconde
Le relais instantané peut attendre jusqu'à 10 secondes
L'enregistrement VOD peut attendre jusqu'à 1 minute
Tout ce temps supplémentaire signifie plus de temps pour que les anciennes images arrivent. Le flux en temps réel est peut-être extrêmement altéré, mais la VOD est impeccable.
MoQ pour les robots
Les humains ne sont pas les seuls à avoir besoin de flux en direct. Faites entrer les robots. Ils croquent les octets.
Il s'avère que MoQ fonctionne pour bien plus que les médias :
Le compteur de vitesse ? Un streaming en direct.
Le volant ? Un streaming en direct.
Le capteur de force G ? Croyez-le ou non, un streaming en direct.
Sérieusement, les médias n'ont rien de spécial. Ce sont simplement des données encodées par delta. Vous pouvez encoder par delta de nombreuses choses, même du JSON.
Les réseaux sont limités, nous découpons donc les médias en morceaux. Chaque piste, groupe, image ou paquet individuel pourrait être abandonné sans interrompre le flux média. La réalité, c'est que certains octets ont tout simplement moins de valeur que d'autres.
Le plus dur, c'est de recoller les morceaux. C'est pourquoi nous utilisons des horodatages ; ils nous indiquent quand les événements se sont produits les uns par rapport aux autres. Même les métadonnées sont horodatées afin de pouvoir être associées aux images audio et vidéo.
Vous pouvez, et devriez, prendre la pilule rouge et utiliser MoQ pour TOUT. Une seule connexion QUIC coopérative avec : ‘contrôles > audio > métadonnées > vidéo'
LE SAVIEZ-VOUS ? : MoQ est utilisé à distance pour piloter des drones via Starlink. Pas seulement pour le flux de la caméra, mais aussi pour les commandes !
Et oui, cela semble simple, mais c'est quelque chose que WebRTC gâche complètement. Vous devez utiliser une connexion séparée pour les métadonnées et les horodatages ne sont pas exposés dans le navigateur.
MoQ pour la piste
Il s'avère qu'il y a ÉNORMÉMENT de caméras vidéo autour d'une piste de course. Et il y a ÉNORMÉMENT de spectateurs qui veulent les voir.
Nous ne voulons évidemment pas que les spectateurs se connectent directement à chaque caméra. Il est impossible que cette pauvre caméra vidéo puisse diffuser 100 000 copies du même flux. Nous voulons que les studios de diffusion prennent ces flux d'entrée et les combinent en un flux syndiqué pour la distribution.
Mais que se passe-t-il s'il y a plusieurs studios de diffusion qui souhaitent obtenir les mêmes images ? Les camions de liaison satellite sont coûteux et disposent d'un budget de bande passante limité. Nous ne voulons pas transmettre plusieurs copies des mêmes images, et nous ne souhaitons pas non plus transmettre des images dont personne ne veut.
C'est là que MoQ brille.
moq-relay est un proxy simple qui connecte 1 éditeur à N abonnés (par diffusion/piste). Lorsque les instances de moq-relay se connectent entre elles, elles forment automatiquement un groupe. Vous pouvez les héberger vous-même (tout est open source) ou payer un CDN pour les héberger pour vous.
moq-relay gère la découverte, le routage et le proxying. Par exemple :
Chaque caméra se connecte à un moq-relay auto-hébergé à
192.168.420.69.moq-relay est exécuté avec
--cluster-connect https://cdn.moq.dev/f1.Les clients du studio (ou d'un relais) se connectent à
https://cdn.moq.dev/f1.
Comme par magie, tous les flux caméra sont automatiquement disponibles sur chaque relais, automatiquement transmis par proxy si nécessaire. De même, une seule copie est transmise entre chaque instance moq-relay, quel que soit le nombre d'abonnés en aval.
C'est un enjeu majeur lorsqu'Internet sur le lieu de l'événement est instable et que des camions satellites coûteux sont impliqués. Exécutez quelques instances moq-relay sur chaque piste de course, agrégez automatiquement tous les flux et publiez-les sur un CDN. Un jeu d'enfant !

Et il n'y a aucune limite au nombre de connexions que vous pouvez établir. moq-lite utilisera la connexion avec le chemin le plus court en cas d'égalité. Peut-être qu'une connexion passe par Ethernet tandis que l'autre passe par satellite ; faites-vous plaisir.
Conclusion
Media over QUIC offre une foule de cas d'utilisation intéressants, même au-delà des médias. C'est l'avenir du streaming en direct et vous devriez vous joindre à l'aventure. Vroum vroum.
Merci encore à Fastly d'avoir sponsorisé cet article. On m'a simplement dit d'écrire quelque chose sur MoQ, alors c'est ce que j'ai fait. AVERTISSEMENT : je ne regarde même pas la F1 lol.
Écrit par @kixelated. N'hésitez pas à m'envoyer un e-mail ou à consulter moq.dev pour d'autres gourmandises MoQ.


