Comment Netflix gère la qualité de son streaming ?

Comme toute plate-forme web moderne, Netflix dispose d’algorithmes d’apprentissage machine spécifiques dont on ne soupçonne pas l’existence, en particulier ceux pour améliorer la qualité du streaming. Avec un marché global qui s’élève à environ 117 millions de personnes et une grande différence de connexions disponibles, le défi technique est fascinant !

Les problèmes de gestion du streaming

Quand on parle de streaming, beaucoup de variables rentrent en jeu, en particulier pour les utilisateurs qui utilisent la connexion de données, par nature instable. Par exemple, pendant un voyage en train de Brest à Paris, on va passer de nombreuses fois de la 4G à la 3G, sans pour autant que le flux vidéo ne s’interrompe. La raison ? C’est l’apprentissage machine, capable de détecter la stabilité de votre connexion et de faire le meilleur usage du streaming, qui ajuste automatiquement la qualité.

Netflix a vraiment pris ce défi du streaming à cœur car c’est un défi d’expansion. L’entreprise a ainsi développé des algorithmes spéciaux nourris par l’activité et les données des appareils des utilisateurs, les conditions du réseau et du matériel, ainsi que des aspects choisis directement par le consommateur. Toutes ces données sont combinées pour que l’apprentissage machine apprenne quels sont les besoins de chaque utilisateur. En gros, si vous avez l’habitude de voyager et que vous êtes satisfait d’une qualité pas trop élevée, l’algorithme chargera le contenu en fonction de vos besoins.

Anticiper la stabilité du réseau

La qualité du réseau est difficile à décrire et à prédire. Les données telles que la largeur de bande moyenne et le ping offert par une connexion sont souvent des indicateurs instables et ne sont pas nécessairement suffisants pour établir une réelle tendance dans le temps. Le facteur qui fait la différence est la prévision de la stabilité du réseau. Toutefois, comment la plate-forme Netflix peut-elle prédire ce que sera la connexion dans les 15 prochaines minutes ?

La vérité c’est que l’on ne peut pas prédire avec une certitude absolue quand une baisse de stabilité se produira, mais en analysant une énorme quantité de données, on peut obtenir des statistiques plus ou moins fiables, ce qui permet à l’algorithme d’adapter la qualité du streaming vidéo pendant la lecture. Le contenu de Netflix est aussi souvent encodé en différentes qualités vidéo pour permettre la lecture dans n’importe quelle condition de réseau. Le but ultime des algorithmes d’apprentissage machine est donc de choisir la résolution à laquelle le contenu est reproduit.

Choix intelligent de la qualité vidéo

C’est bien beau tout cela, mais quelles sont les données clés à prendre en compte ? Tout d’abord, le temps d’attente pour charger initialement la vidéo, ce qui permet à l’algorithme de déterminer quel encodage a des temps de lecture acceptables. Il y a aussi des statistiques dédiées à la qualité avec laquelle un utilisateur donné a déjà vu d’autres contenus dans le passé, le nombre de fois que la lecture a été interrompue et le nombre de « changements de qualité » pendant la lecture. Cela peut paraître banal, mais tout cela se fait en quelques secondes, grâce aux algorithmes de traitement.

Une autre technique fondamentale utilisée par Netflix est de télécharger à l’avance un contenu que l’utilisateur s’attend à regarder dans le futur. Exemple concret : si l’on regarde l’avant-dernier épisode de Stranger Things, il est fort probable que l’on regarde ensuite le grand final ! L’algorithme pensera donc à télécharger la partie initiale de ce contenu bien à l’avance, afin d’offrir la meilleure expérience possible par la suite. En bref, Netflix utilise l’historique de visualisation, mais uniquement lorsque vous disposez d’une connexion considérée comme suffisamment stable, sur la base des facteurs mentionnés ci-dessus, pour ne pas détériorer la qualité en temps réel.

Tout un programme !  🙂

Tu veux critiquer ?

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *