Diffusion d’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 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 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.

WebRTC

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…).

SRT

NON

Faible latence. Open Source.

RIST

NON

Faible latence. Open Source.
Meilleures performances que SRT en haute définition.

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) :

Flux vidéo

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.
  • go2rtc génère un flux RTSP/RTP, HLS ou WebRTC à partir d’un flux vidéo brut ou d’un flux RTMP.
  • OvenStreamEncoder.

Serveurs WebRTC, sous licence Open Source :

Plateformes de diffusion de flux vidéo WebRTC, sous licence Open Source :

  • Kerberos Agent. Plateforme de vidéosurveillance.
  • Restreamer est très intéressant pour un simple usage pédagogique mais ne propose pas encore WebRTC.

Plateformes de diffusion de flux vidéo WebRTC, sous licence non Open Source (liste non exhaustive) :

Lecteurs de flux vidéo intégrables dans une page web :

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. Logotype licence CC BY-SA

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.

1 thought on “Diffusion d’un flux vidéo en direct sur le Web

Laisser un commentaire