Diffuser un flux vidéo en direct sur le Web
La diffusion d’un flux vidéo en direct sur le Web (live streaming en anglais) est surtout utilisée pour la vidéosurveillance ou pour la retransmission d’événements. Elle permet aussi de découvrir un lieu à distance (reportage, visite d’usine) ou de manipuler des objets à distance (opération chirurgicale). Elle est différente de la visioconférence, car il n’y a généralement qu’une seule source vidéo et la diffusion est publique et accessible en permanence.
Il existe plusieurs protocoles pour diffuser un flux vidéo en direct. Les plus performants sont :
|
Protocole |
Connexion entrante1 |
Description |
Avantages |
Inconvénients |
|
MoQ (Media over QUIC) |
NON |
Transport par UDP/QUIC et WebTransport. Voir cette documentation Webcodecs. |
Latence très faible. WebTransport intégré dans les navigateurs web. Plus simple et supporte plus de clients que WebRTC. |
|
|
NON |
Transport par UDP. Communications client-serveur ou pair-à-pair. Utilise plusieurs protocoles dont RTP (Real-time Transport Protocol). |
Latence très faible. Intégré dans les navigateurs web. |
||
|
RTMP |
NON |
Client RTMP répandu dans les caméras en réseau (caméras IP). | Latence faible. |
Transport par TCP et non UDP. Incompatible avec HTML5. |
|
RTSP |
OUI |
Serveur RTSP répandu dans les caméras IP. RTSP est généralement utilisé avec le protocole RTP qui transmet le flux vidéo de la caméra. |
Permet de commander les caméras IP à distance (lecture, pause…). |
Transport par TCP et non UDP. |
|
NON |
Transport par UDP. |
Latence faible. |
||
|
NON |
Transport par UDP. |
Latence faible. |
1 Connexion entrante : cela nécessite la mise en place de moyens de sécurisation du serveur situé dans le réseau privé (isolation, filtrage des flux…), en plus du paramétrage d’un routeur, d’un pare-feu, voire d’un proxy. Il vaut mieux utiliser un protocole avec une connexion sortante, vers un serveur situé en dehors du réseau privé.
Les protocoles RTMP (Real Time Messaging Protocol), SRT (Secure Reliable Transport), RIST (Reliable Internet Stream Transport), WebRTC ou MoQ permettent de « pousser » un flux vidéo vers une plateforme de diffusion en direct. Lorsqu’une application ou une page web demande le flux vidéo à la plateforme, pour l’afficher, la plateforme lui envoie le flux en continu (protocoles WebRTC ou MoQ) ou découpé en segments (protocoles HLS, Low-Latency HLS, MPEG-DASH ou LLDASH) :
Attention : suivant les protocoles utilisés, la latence peut dépasser 30 secondes. C’est l’écart entre le moment où on filme avec la caméra et le moment où on affiche la vidéo dans une page web. HLS (HTTP Live Streaming) et MPEG-DASH (Dynamic Adaptive Streaming over HTTP) ont une latence de 20 à 30 secondes, due à la transmission du flux vidéo en segments. RTMP, RTSP/RTP (Real Time Streaming Protocol), SRT, RIST, LLDASH et Low-Latency HLS ont une latence d’environ 3 secondes. WebRTC et MoQ ont une latence de moins d’une seconde. Il faut donc vérifier les protocoles utilisables avec la plateforme de diffusion.
Pour économiser la bande passante, il faut compresser le flux vidéo avec un encodeur performant : AV2, AV1 ou sinon, H.266/VVC (Versatile Video Coding) ou MPEG-5 (LCEVC). Les encodeurs VP9 et H.265/HEVC (High Efficiency Video Coding) sont moins performants, les encodeurs VP8 et H.264/AVC le sont encore moins. Voir Vidéos de test H.264, HEVC, VP9 et AV1 du 320p à la 8K.
Pour savoir quels encodages/décodages peuvent être faits sous Linux par votre carte graphique, installez le paquet vainfo :

Il peut être intéressant d’utiliser le protocole MQTT couplé avec le système de commande d’une caméra (ONVIF, API HTTP…) pour l’allumer/éteindre depuis Internet, zoomer et la faire pivoter.
Pour diffuser le flux vidéo d’une caméra en WebRTC ou/et en MoQ :
- FFmpeg génère un flux RTMP, SRT, RIST ou WebRTC à partir du flux vidéo brut issu d’une caméra.
- Le logiciel de capture et de diffusion de flux vidéo OBS Studio fait de même, ainsi qu’à partir d’une capture d’écran/fenêtre. Il existe un module pour diffuser en MoQ.
- GStreamer génère un flux RTMP, SRT, RIST ou WebRTC à partir du flux vidéo brut issu d’une caméra.
- Larix Broadcaster génère un flux vidéo depuis un smartphone.
- libpeer : librairie WebRTC en C.
Serveurs WebRTC ou/et MoQ, plateformes de diffusion de flux vidéo :
- Software Mansion conçoit des plateformes de diffusion de flux vidéo, basées sur le cadriciel de développement Membrane. Il existe un module MoQ.
- Ant Media Server. Ingère et diffuse les flux MoQ depuis un navigateur web.
- go2rtc.
- Kerberos Agent. Plateforme de vidéosurveillance. MoQ a été ajouté.
- Meetecho conçoit des plateformes de diffusion de flux vidéo sur mesure (serveur WebRTC + interface web de gestion), basées sur le serveur Janus. L’ajout de MoQ est étudié.
- MediaMTX. Redirige et convertit les flux de transport, sans transcodage vidéo. Ingère et diffuse les flux MoQ depuis un navigateur web.
- MistServer. L’ajout de MoQ est envisagé mais non planifié.
- moq-relay.
- Cadriciel de développement openVidu. Utilise les serveurs WebRTC Mediasoup et LiveKit. L’ajout de MoQ n’est pas prévu dans Mediasoup.
- OvenMediaEngine.
- PeerServer.
- La plateforme Restreamer est très intéressante mais ne propose pas encore WebRTC.
- SRS. L’ajout de MoQ est envisagé mais non planifié.
Lecteurs de flux vidéo WebRTC intégrables dans une page web :
- WebRTC player affiche le flux diffusé par n’importe quel serveur.
- L’extension WordPress SRS Player affiche le flux diffusé par n’importe quel serveur.
- videojs-webrtc-plugin affiche le flux diffusé par un serveur Ant Media Server.
- OvenPlayer affiche le flux diffusé par un serveur OvenMediaEngine. Démonstration.
- Shaka Player affiche un flux diffusé avec le protocole MoQ.
Testez si votre navigateur web est compatible WebRTC, AV1, etc.
Schéma Flux vidéo : fichier LibreOffice.