Monitoring vidéo · Télécom Paris / GPAC · 2024 — présent
GPAC Monitor.
Voir ce qui se passe dans un pipeline vidéo.

Une interface de diagnostic pour suivre les filtres, les flux audio et vidéo, les métriques et les événements d’une session GPAC — en direct ou lors de sa relecture.
Le problème à résoudre
Un pipeline GPAC est un graphe vivant : les filtres apparaissent, les connexions changent et chaque PID transporte ses propres propriétés média. Les logs seuls rendent difficile la lecture de cette activité, surtout lorsque la session dure ou qu’un incident ne se reproduit pas facilement.
Une lecture du système, pas seulement un tableau de bord
L’interface réunit le graphe des filtres, les détails des PIDs, les statistiques de session, les métriques CPU et mémoire, et les logs. La sélection d’un filtre permet de relier sa place dans le pipeline à ses propriétés, ses arguments et son état.
- Graphe interactif des filtres et des connexions.
- Détails des flux : codec, type média, dimensions, débit et état des PIDs.
- Widgets de monitoring et métriques de statut par filtre.
Une intégration directe à l’API GPAC
Le serveur de monitoring s’exécute dans le runtime QuickJS embarqué de GPAC. Il utilise les callbacks de FilterSession pour suivre la création et la suppression des filtres, la reconfiguration des PIDs et les changements d’arguments. Il lit les propriétés et statistiques des PIDs via les bindings GPAC, puis transmet des messages ciblés au navigateur par WebSocket RMT.
- Callbacks de session et boucle de monitoring partagée.
- Abonnements par type de données et fréquence contrôlée.
- Collecte des propriétés IPID/OPID, avec conservation du lien vers le filtre source.
Rejouer pour comprendre
Le mode History / Replay enregistre les événements et des états de référence. Lors d’un seek, un checkpoint sert de base, puis les événements reconstruisent l’état visible : graphe, arguments, PIDs, statuts et logs. Le même pipeline d’actions alimente le direct et l’historique.
Performance et fiabilité
Le profilage a conduit à limiter les mises à jour et les rerenders du graphe, à déplacer du parsing vers des Web Workers et à regrouper certains flux WebSocket. Des tests Vitest, des régressions ciblées et des fixtures de contrat client/serveur protègent les invariants techniques.
Après optimisation du graphe et de la fréquence des mises à jour.
Stabilité visuelle de l’interface.
Chiffre déclaré dans le CV 2026.
