Diffuser un flux vidéo en direct sur le Web
La diffusion d’un flux vidéo en direct sur le Web 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 faire une manipulation à 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 de communication pour diffuser un flux vidéo en direct. Les plus performants sont :
|
Protocole |
Connexion entrante1 |
Description |
Avantages |
Inconvénients |
|
WebTransport, basé sur HTTP/3 et QUIC |
NON si serveur public |
|
Latence extrêmement faible. |
|
|
NON |
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…). |
|
|
NON |
Latence faible. |
|||
|
NON |
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) ou WebRTC 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 (protocole WebRTC) ou découpé en segments (protocoles HLS, Low-Latency HLS, MPEG-DASH, 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 a 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 : 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 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 :
- 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.
- 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, plateformes de diffusion de flux vidéo :
- Software Mansion conçoit des plateformes de diffusion de flux vidéo sur mesure (serveur WebRTC + interface web de gestion), basées sur le cadriciel de développement Membrane. Membrane est par exemple utilisé avec le serveur Fishjam.
- Ant Media Server.
- go2rtc.
- Kerberos Agent. Plateforme de vidéosurveillance.
- 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.
- MediaMTX. Redirige et convertit les flux vidéo, sans transcodage.
- MistServer.
- Cadriciel de développement openVidu. Utilise les serveurs WebRTC Mediasoup et LiveKit.
- OvenMediaEngine.
- PeerServer.
- La plateforme Restreamer est très intéressante mais ne propose pas encore WebRTC.
- SRS.
Lecteurs de flux vidéo intégrables dans une page web :
- Video.js et son module videojs-webrtc-plugin permettent d’afficher un flux WebRTC dans une page web.
- OvenPlayer permet d’afficher un flux Low-Latency HLS, LLDASH ou WebRTC dans une page web. Démonstration.
- Lecteur vidéo de Ghostream.
- L’extension WordPress SRS Player permet d’afficher un flux vidéo dans une page de blogue.
- WebRTC player.
Testez si votre navigateur web est compatible WebRTC, AV1, etc.
Schéma Flux vidéo : fichier LibreOffice.