Diffuser un flux vidéo en direct sur le Web

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.

WebRTC

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

SRT

NON

Latence faible.

RIST

NON

Latence faible.
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é.

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éoAttention : 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 :

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 :

 

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

Testez si votre navigateur web est compatible WebRTC, AV1, etc.

Schéma Flux vidéo : fichier LibreOffice.

 

Laisser un commentaire