Le traitement vidéo de YouTube, comment ça marche et à quoi ça sert ?

closeCet article a été publié il y a 8 ans 10 mois 9 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Comment YouTube fait pour pouvoir servir à son milliard de visiteurs mensuels les innombrables heures de vidéos qu’il contient, le tout si possible sans blocage ? Comment ça fonctionne ? Sans pouvoir dévoiler tous les détails (parce qu’ils ne sont pas forcément publics), on peut déjà en savoir beaucoup à propos d’un des plus gros sites Web du monde actuel.

Des copies multiples pour tous les appareils

Une chose d’entrée à savoir : vous ne voyez jamais le fichier original qu’a créé l’auteur de la vidéo. Systématiquement, la vidéo envoyée passe dans une chaîne de traitement destinée à pouvoir permettre aux différents lecteurs (flash, html5, mobile) de vous proposer notamment le choix de la qualité, en fonction de votre débit et de la puissance disponible, et dans le cadre du HTML5, les technologies disponibles (le codec audio/vidéo).

Pour ça, pas de mystère : un fichier par qualité, au moins (j’y reviendrais). Les résolutions disponibles sont dépendantes de la qualité d’origine (évidemment on ne fera pas de 4K d’un fichier en qualité DVD), et même si vous envoyez votre fichier dans une résolution déjà proposée par la plate-forme, celle-ci est recompressée pour en limiter le débit. Une donnée vitale quand on sait que trois cents heures de vidéo sont mises en ligne… chaque minute (source).

Voyons ça de plus près avec un outil que vous connaissez bien si vous êtes un client régulier du blog, youtube-dl. Et puisqu’après tout, c’est lui qui a inspiré cet article, auscultons la vidéo de Marques Brownlee, alias MKBHD, sur le « Youtube processing » :

On en voit des choses, un peu trop. Laissons rapidement de côté les lignes contenant le mot DASH, sur lequel je vais revenir juste après. Les lignes restantes nous permettent d’avoir déjà l’essentiel des informations : les résolutions les plus faibles sont encodées en 3gp, un codec ancien utilisé majoritairement par nos mobiles, avant l’avènement de la 3G et des smartphones. la ligne en flv, est un vestige de l’ère pré-2008 quand YouTube, qui n’utilisait que du flash (FLV est le format Flash Video), ne proposait que du 240p. Les formats MP4 sont là pour fermer la marche de la vidéo « à l’ancienne », avec le lecteur Flash (qui sait aussi lire le MP4).

Et donc chaque fois que le lecteur observe une variation dans le débit, il va chercher le fichier correspondant à ce débit observé. Quand ça se fait vers le haut, vous êtes contents, mais si vous « saturez » (ou si votre opérateur sature, ce qui arrive beaucoup plus souvent, en particulier en France), et que la qualité se dégrade, vous le voyez tout de suite : l’image devient floue, baveuse, sans parler des couleurs. Vous comprenez maintenant pourquoi j’ai très vite utilisé des outils comme youtube-dl ou Youtube Downloader HD pour pouvoir récupérer les vidéos, en plus de pouvoir les regarder dans le salon, moi qui suis abonné Free depuis 2006 (quoique l’accord récent se voit vraiment, je n’ai plus jamais de ralentissement, mais je garde un débit trop faible pour pouvoir regarder dans de bonnes conditions).

Je disais que le fichier original n’était pas utilisé, j’ai comparé ma version originale de la vidéo sur Thunderbird au fichier mp4 « monobloc » (code 22) :

J’ai « masqué » les fichiers supplémentaires qui étaient présents dans le dossier, mais on voit bien que YouTube a remanié ma vidéo, légèrement seulement ce qui n’est pas surprenant puisque j’avais déjà sélectionné un profil très proche et adapté justement au site dans OpenShot. Mais les différences peuvent être bien plus importantes, surtout si vous avez un fichier avec un débit vidéo important : MKBHD explique dans sa vidéo que le débit peut être réduit de plus de dix pour cents.

Béni soit le DASH

Tout pratique qu’il était, le streaming pratiqué par le lecteur Flash n’est quand même qu’un gros bidouillage pour faire ça sur de l’HTTP, qui n’est pas prévu pour ce genre d’usage. Avec la montée en puissance de l’HTML5, il a bien fallu trouver quelque chose de différent. Une fois de plus, c’est dans le camp du Motion Picture Expert Group à l’origine des codecs et formats mp* (et qui s’est ravi de la « victoire » de l’H264 utilisé dans les Bluray et sur le Web) qu’est venu la solution, le Dynamic Adaptative Streaming over HTTP. Je vous laisse avec l’article anglophone de Wikipedia pour en connaître tous les rouages, mais l’idée, c’est de standardiser la possibilité de streaming audio/vidéo tout en utilisant ce bon vieil HTTP qui n’a pas été conçu pour ça. L’avantage est de pouvoir proposer les vidéos sur tous types de réseaux, et notamment ceux qui filtrent tout sauf l’HTTP (et maintenant HTTPS).

DASH a donc été choisi par Google pour pouvoir gérer le futur de la plate-forme, avec le Full HD puis la 4K, en passant par les vidéos en 60 images par secondes à destination du monde du jeu vidéo (le gaming pour ceux qui pensent que parler franglais à tout prix est cool). Et aussi le multi-angles, pourquoi pas la 3D, enfin bref, tout ce qu’ils pourront inventer. La particularité de DASH tel qu’implémenté par YouTube, c’est qu’il sépare les flux audio et vidéo, sans parler de la disponibilité à la fois au format WebM et MP4. Pour rappel, le WebM est le format de vidéo ouvert (mais sujet à caution, notamment au niveau d’éventuels brevets), issu du rachat de On2 Technologies par Google. Il repose sur le VP8 pour la vidéo, et le Vorbis pour l’audio. Les deux (et donc le container) ne sont malheureusement supportés que par Chrome et Firefox (et vous savez tout le bien que je pense de Firefox hein ?).

Firefox à la peine avec tout ce futur

Malheureusement, le standard DASH, sur lequel on peut faire passer n’importe quel audio/vidéo, n’est supporté dans HTML5 qu’au travers de Media Source Extension, et leur verrouillage par DRM au travers d’EME, deux mécanismes d’HTML5 sur lesquels Mozilla traîne la patte. En particulier sous Linux, ce qui peut paraître paradoxal pour un logiciel à source ouverte (pour rappel, la marque est protégée, excluant le qualificatif de logiciel libre « pur »). Pour nous, seuls les éléments d’MSE nécessaires à la lecture HTML5 pour YouTube sont activés, et EME est encore absent, excluant Netflix des usages possibles sans gros hack pourri pour passer par Silverlight, la technologie de Microsoft utilisée par Netflix. EME n’est proposé que depuis la toute récente version 38 pour Windows (même pas pour OS X).

Sans parler qu’à un moment donné, et ce quelque soit le navigateur, le débit risque de ne pas suivre. Même la 4K est proposée au format MP4 au travers du codec H264, qui devient alors très, très gourmand. Si H265 est déjà prêt techniquement parlant pour prendre haut la main la relève, son support qu’il soit logiciel ou matériel est encore très, très en retard. Pareil du côté de Google, qui a aussi sa solution maison, le VP9, successeur du VP8, lui aussi « ouvert », et qui est déjà implémenté dans les navigateurs « habituels ». Évidemment, Google s’est assuré que Chrome soit entièrement compatible avec tout ça (le contraire aurait été surprenant).

Ce n’est pas que YouTube

Toutes les plate-formes de vidéo en streaming, même sans recourir au DASH, utilisent la même technique, à savoir plusieurs fichiers pour plusieurs débits, le lecteur se chargeant d’analyser le débit en cours de la connexion pour s’adapter et éviter la coupure de la lecture, au prix parfois de la qualité d’image (très chiant quand du texte à l’écran devient illisible).

L’enjeu est double, puisqu’il s’agit aussi de contrôler en partie la consommation en bande passante de tout ce petit monde, car c’est une ressource finalement bien plus rare et plus chère que la puissance de calcul nécessaire pour convertir la masse de vidéos que nous fournissons chaque jour à ces sites. Et ça, n’importe quel internaute surfant à moins de 3Mbps pourra très facilement vous le dire.

3 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Gamernew
Gamernew
21/05/2015 08:38

Merci pour cette explication. je me demandais aussi : Pourquoi il y avait tellement de format et de résolution différents sur youtube ?

J’ai ma réponse maintenant.

Bidi
Bidi
20/10/2016 18:27

Bonjour, merci pour les explications !
sauriez-vous m’indiquer un outil windows capable de prendre les fichiers dashvideo et dashaudio téléchargés et de les « regrouper » dans une video lisible simplement svp ? (avec vlc par exemple)