Retour aux projets

Sportbak

Plateforme de streaming et de replay de matchs en temps réel

Distributed SystemsReal-Time SystemsWebRTCGStreamerWebSocketsNode.jsLive StreamingSports Tech
Sportbak's Smart Scorer

Les centres de football indoor avaient besoin de plus qu’un simple tableau de score : ils voulaient diffuser des matchs en direct avec des overlays professionnels, des replays instantanés et un accès mobile, sans l’infrastructure d’un système broadcast.

J’ai conçu et développé Sportbak, un système distribué qui capture, enrichit et diffuse les matchs en direct tout en synchronisant les événements de jeu sur l’ensemble des appareils en temps réel.


Fonctionnalités principales

  • Pipeline vidéo en direct avec rendu d’overlays en temps réel (score, équipes, chronomètre)
  • Gestion événementielle des matchs (buts, périodes, pauses) synchronisée entre tous les clients
  • Streaming WebRTC lisible directement dans un navigateur mobile
  • Génération automatique de replays déclenchée par les événements de jeu
  • Application unifiée pour opérateurs (scoring) et spectateurs

Résultats clés

  • Synchronisation en moins d’une seconde entre interface de scoring, flux vidéo et appareils clients
  • Pipeline de production entièrement en temps réel (aucun post-traitement nécessaire)
  • Architecture résiliente : chaque service peut échouer et redémarrer sans interrompre un match
  • Fonctionnalités de type broadcast sur du matériel standard (caméras IP + systèmes embarqués)

Vue d’ensemble de l’architecture

Sportbak est un système distribué polyglotte composé de services faiblement couplés :

  • Couche vidéo (Python + GStreamer)
    Encodage matériel (VAAPI) avec un compositeur d’overlays personnalisé injectant l’état du match directement dans un flux vidéo 1080p en temps réel
  • Orchestration des sessions (Node.js)
    Gestion du cycle de vie des matchs : périodes, buts (avec timestamps vidéo), contrôle du chronomètre et propagation des événements
  • Couche de diffusion (Node.js + Redis + MongoDB)
    Distribution de l’état et des métadonnées via WebSockets / Socket.io entre les différents appareils
  • Applications clientes (Angular + Ionic + Capacitor)
    • Interface opérateur avec contrôles en temps réel et raccourcis clavier
    • Interface spectateur (TV/mobile) avec lecture en direct via WebRTC

Points techniques clés

  • Conception d’un protocole WebSocket inter-services reliant Python et Node.js
  • Mise à jour des overlays en temps réel via propriétés dynamiques dans GStreamer
  • Implémentation du signaling WebRTC (SDP/ICE via WebSocket) pour une lecture sans plugin
  • Extraction automatique de clips vidéo aux timestamps des buts, sans intervention manuelle
  • Isolation des pannes entre capture vidéo, orchestration et diffusion

Mon rôle

Responsable du système de bout en bout :

  • Conception de l’architecture et des services
  • Développement du pipeline vidéo et du streaming
  • Implémentation des communications temps réel
  • Développement des applications opérateur et spectateur