MultiPOVPWAProductionSync audio

MultiPOV : du besoin à la première version web

MultiPOV est parti d’un besoin : regarder ensemble les points de vue d’une même session, alignés dans le temps. Cet article raconte la première version web, mise en production en mai 2026.

Mise à jour juin 2026. Cet article reste le récit de la V1 PWA livrée en production en mai 2026. Depuis, MultiPOV a évolué vers un système média plus large : cœur Rust commun, exposition WASM côté web, app Android et validation live sur appareil. J'en détaille la suite dans MultiPOV après la PWA : transformer une idée web en système média Rust/WASM + Android.

Le besoin, en une phrase

N personnes partagent une session — un raid, une soirée jeu de rôle, une partie en coopération — et chacune streame son propre point de vue sur YouTube, Twitch ou Kick. Un spectateur veut voir tous les POV à la fois, alignés dans le temps, comme le ferait une régie multi-caméras — sauf gratuit, automatique et sans compte.

Quelques minutes ont suffi pour cerner ce besoin et délimiter le périmètre de la première version.

Du besoin au cadrage

La contrainte technique est la synchronisation. Les flux démarrent à des instants différents, dérivent, et se mettent en pause indépendamment. Le produit se réduit donc à une question : comment aligner des flux arbitraires sans timecode commun ?

L’audio commun de la session, capté par chaque participant, sert de référence pour corréler les flux.

Le cœur technique

  • Sync audio GCC-PHAT côté client. La première version exécutait la corrélation croisée généralisée en TypeScript avec un Web Worker et FFT.js pour calculer un décalage par POV. Une MasterClock partagée pilotait ensuite chaque player ; la calibration était ajustable à la milliseconde et l'app se re-synchronisait automatiquement après chaque pause. Depuis juin 2026, ce cœur a été remplacé par un moteur Rust commun exposé en WASM côté web et réutilisé côté app native.
  • Trois plateformes, une vue. YouTube, Twitch et Kick — en VOD et en direct — passent par une abstraction unifiée, pour centraliser les différences entre plateformes.
  • Sessions partageables sans compte. Toute la session est encodée dans le chemin de l'URL (/s/…), donc une disposition est portable en commentaire ou en message privé. Aucune inscription, aucune base d'utilisateurs.
  • Dispositions configurables. Grille auto, spotlight, theater et empilements ; glisser, redimensionner et sauvegarder ses propres dispositions.

Limiter le poids de l’application

Deux choix réduisent le travail pris en charge par MultiPOV :

  • Front-end. Solid compile vers un runtime minuscule sans virtual DOM, le service worker est fait maison sans aucune dépendance, et il n'y a ni système de compte ni base de données côté client. Ces choix limitent le poids du bundle à charger sur téléphone.
  • Architecture média. Les vidéos et les chats restent fournis directement par les players YouTube, Twitch et Kick. MultiPOV se concentre sur l'orchestration, la disposition et la synchronisation, sans dupliquer les flux déjà servis par les plateformes.

La mise en production

La PWA Solid + TypeScript utilise un service worker maison et un build reproductible. Des vérifications automatiques contrôlent la parité de la page de présentation FR/EN. L’objectif était de rendre la régie utilisable sur mobile comme sur un écran 4K.

Le résultat est en ligne sur watchmultipov.app depuis mai 2026.

Essayez — et suivez la suite

Si vous organisez des sessions multi-POV, le plus rapide pour juger est d'en ouvrir une :

  • watchmultipov.app — collez quelques liens, laissez la sync audio les aligner.
  • Suivez le développement et les clips sur X et TikTok.

Si un POV ne s’aligne pas ou qu’une disposition pose problème, indiquez-le : ces retours orientent les corrections suivantes.