Monitoring des services de streaming live audio/video

3 minutes read

Dans le cadre d'une de mes vies précédentes, chez Yacast Media (depuis racheté par SmartJog et devenu Arkena) en l'occurrence, se posait la problématique de comment s'assurer de la qualité de service envoyée au client pour tout ce qui était flux live. A chaque problème, sa solution, et ici, elle se prénomme Bobone.

Certains d'entre vous connaissent les CDN : les Content Delivery Networks, des diffuseurs de contenu. La majorité suppose qu'ils ne font que de la mise en cache du contenu. C'est en effet une bonne part de leur métier mais pas l'unique. Parmi les autres, il y a aussi, dans ce qui nous intéresse ici, des fonctions de captation (récupérer un signal hertzien, satellite, câble, ou autre), de transcodage (transformer ce flux capté en flux informatique) et de diffusion (le coeur du métier du CDN donc). Ceci représente le streaming. Pour vous, en tant qu'utilisateur, il s'agit de ce que vous pouvez consulter sur votre boîter TV fourni par votre FAI, ou via votre tablette ou smartphone.

Pour se faire, les infrastructures sont toujours plus importantes, toujours plus complexes. Dans le cas de la mise en cache de contenu, il est relativement aisé de détecter automatiquement une défaillance ou un dysfonctionnement. Pour autant bien trop peu de CDN mettent ces routines en place ... Dans le cas de la diffusion de contenu en direct, le streaming, il n'y avait pas à l'époque d'outil disponible pour faire ce contrôle automatique. Il incombait donc à des humains de tester les flux.

Ceci représente un coût non négligeable pour la société et le temps qu'un humain teste tous les flux sur tous les serveurs, l'ensemble de la plateforme pouvait s'écrouler ou diffuser le contenu avec une qualité déplorable. Parti de ce constat, c'est posé la question de comment le résoudre. M'est alors venue l'idée d'utiliser VLC pour se faire.

VLC est un outil permettant de regarder des vidéos mais aussi des flux audio/vidéo directement sur internet. Il fonctionne sur de nombreux systèmes dont Linux, ce qui m'arrange pour pouvoir faire ma programmation. Au moins dans sa version Linux, il propose de fonctionner entièrement en ligne de commande, publiant un nombre mirobolant d'informations à chaque instant, mais également l'image transformée en ASCII, grâce à la libcaca (ne rier pas trop, faut qu'on continue à bosser).

Il me restait donc à définir du code permettant de recueillir la liste des points de diffusions de chaque plateforme, la liste des serveurs et tester l'ensemble. C'est le but du code alors rédigé en PHP qui fonctionnera en ligne de commande. Ce programme multi-process consultera plus d'une centaine à chaque instant et analysera une centaine de points sur les flux pour en déterminer la qualité de service. Le résultat sont stockés pour l'heure dans une base SQLite embarquée. L'application est donc mobile. A l'époque, cette base était consultée par l'intranet qui permettait de lister les problèmes et relancer les flux sur les différents équipements via un simple clic.

Les opérateurs y gagnaient en charge de travail, la société en €€ et le client en assurance sur la qualité du service fourni. Des évolutions étaient préves mais n'ont pas vu le jour. Je le ressors aujourd'hui car je vais en avoir besoin et donc vais le faire revivre. Je viens donc d'importer la dernière version du code (qui date de début 2010) sur Github.

Tiens une question du fond, la personne qui se pouffe de rire toute seule : pourquoi Bobonne ? Tout simplement, le programme devait "regarder des chaînes de TV et écouter la radio" en continue. La parfaite ménagère de moins de 50 ans (copyright de nos chères chaînes de TV). En argo, Bobonne.

Updated: