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 faire des travaux pratiques en filmant du matériel pédagogique situé sur un autre site. 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 |
Kyber, un nouveau projet Open Source, sera prêt mi 2024. |
Latence extrêmement faible. Open Source. |
|
NON |
Communications client-serveur ou pair-à-pair. Utilise plusieurs protocoles dont RTP (Real-time Transport Protocol). |
Très faible latence. Open Source. Intégré dans les navigateurs web. |
||
RTMP |
NON |
Client RTMP répandu dans les caméras en réseau (caméras IP). | Faible latence. |
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 |
Faible latence. Open Source. |
|||
NON |
Faible latence. Open Source. |
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é. Dans le doute, demandez à votre service informatique.
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. 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.
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 ou RIST à partir du flux vidéo brut issu d’une caméra. Le logiciel de capture vidéo et de streaming OBS Studio fait de même, ainsi qu’à partir d’une capture d’écran/fenêtre.
- Un dérivé d’OBS Studio génère un flux WebRTC : OBS-studio WebRTC. Il est développé par Dolby.io.
- GStreamer génère un flux RTMP, SRT, RIST ou WebRTC à partir du flux vidéo brut issu d’une caméra.
Serveurs WebRTC, sous licence Open Source :
- go2rtc.
- LiveKit.
- MediaMTX. Redirige et convertit les flux vidéo, sans transcodage.
- Mediasoup.
- Medooze. Développé par CoSMo Software, racheté par Dolby.io.
- Meetecho conçoit des plateformes de diffusion vidéo sur mesure (serveur WebRTC + interface web de gestion), basées sur Janus.
- Software Mansion conçoit des plateformes de diffusion vidéo sur mesure (serveur WebRTC + interface web de gestion), basées sur le cadriciel Membrane. Membrane est utilisé par le serveur Fishjam.
- MistServer.
- Open WebRTC Toolkit Media Server.
- OvenMediaEngine.
- SRS.
Plateformes de diffusion de flux vidéo WebRTC, sous licence Open Source :
- Kerberos Agent. Plateforme de vidéosurveillance.
- openVidu. Utilise les serveurs WebRTC Mediasoup et LiveKit.
- Restreamer est très intéressante mais ne propose pas encore WebRTC.
Plateformes de diffusion de flux vidéo WebRTC, sous licence non Open Source (liste non exhaustive) :
- Agora Broadcast Streaming propose une interface de communication WebRTC avec son serveur.
- Ant Media.
- dacast.
- Dolby.io.
- Flussonic Media Server.
- LiveKit Cloud, basée sur le serveur WebRTC LiveKit.
- LiveU Studio à Strasbourg.
- Nimble Streamer de Softvelum.
- Restream. Utilise le serveur WebRTC Mediasoup.
- Unreal Media Server.
- WOWZA, utilisé notamment par Esup-Pod.
- Zixi. Diffusion via le réseau 5G.
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 blog.
- WebRTC player.
Testez si votre navigateur web est compatible WebRTC, AV1, etc.
Auteur : David VANTYGHEM <david.vantyghem@ensam.eu>. Ce document est mis à disposition selon les termes de la Licence Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International.
Image en vignette : Centre de diffusion en direct de ZDF à Mayence © Olaf Kosinsky / Wikimedia Commons, licence CC BY-SA 3.0 Deutschland.
Schéma Flux vidéo (fichier LibreOffice).
Pour ouvrir, modifier et imprimer les fichiers LibreOffice, téléchargez et installez LibreOffice. Si vous n’avez pas le droit d’installer un logiciel sur votre ordinateur, téléchargez LibreOffice Portable et enregistrez-le dans un dossier, il fonctionne immédiatement sans installation.
Des tests intéressants pour comparer les différents encodages vidéo, les taux de compression, les vitesses d’encodage/décodage, la charge CPU, l’intégration dans les navigateurs web : https://lafibre.info/tv-numerique-hd-3d/comparer-h-264-vp9-av1/