Diffusion d’une vidéo en continu et en direct sur le Web

 

La diffusion d’une vidéo en continu et en direct sur le Web  (« live streaming » en anglais) est surtout utilisée pour la vidéosurveillance ou pour la retransmission d’événements en direct. Elle permet aussi de découvrir un lieu à distance (reportage, visite d’usine…) ou de faire des travaux pratiques en filmant du matériel situé sur un autre site. Elle est plus pratique que la visioconférence, car la diffusion est publique et accessible en permanence une fois l’installation en place.

 

Il existe plusieurs protocoles de communication pour faire de la diffusion en continu et en direct. Les plus courants sont :

Protocole

Connexion entrante1

Avantages

Inconvénients

Données transmises

WebRTC

NON

Très faible latence. Open Source.
Communications client-serveur ou pair-à-pair. Utilise plusieurs protocoles dont RTP (Real-time Transport Protocol).
Intégré dans les navigateurs web.

Sera remplacé par WebTransport ?

Flux audio/vidéo.

RTMP

NON

Faible latence.
Répandu dans les caméras en réseau (caméras IP).

Incompatible avec HTML5.

Flux audio/vidéo.

RTSP

OUI (serveur côté caméra)

Répandu dans les caméras IP, permet de les commander à distance (lecture, pause…). Généralement utilisé avec le protocole RTP qui transmet le flux vidéo de la caméra. RTP est parfois utilisé avec le protocole RTCP (Real-time Transport Control Protocol) pour contrôler la qualité de service.

Flux audio/vidéo.

SRT

NON

Faible latence. Open Source.
Chiffrement AES 128/256.

Flux audio/vidéo.

RIST

NON

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

Flux audio/vidéo.

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 à la personne responsable de la sécurité informatique.

Il peut être très 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.

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 continu et en direct. La plateforme affiche la vidéo dans une page web, en lui envoyant un flux vidéo découpé en segments (protocoles HLS, MPEG-DASH, LLDASH, Low-Latency HLS) ou un flux vidéo continu (protocole WebRTC) :

Schéma 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 de transmission utilisés par la plateforme de diffusion.

Pour économiser la bande passante, il faut compresser le flux vidéo brut 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 sont beaucoup moins performants.

Pour lire un flux vidéo et le diffuser avec le protocole de son choix :

  • RtspSimpleServer.
  • Restreamer : [RTMP, RTSP/RTP, HLS] -> [RTMP, HLS].
  • 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.

SipRadius propose des encodeurs + diffuseurs de flux vidéo.

Serveurs de « live streaming » sous licence Open Source :

  • MistServer : RTMP, RTSP/RTP, SRT -> RMTP (H.264), RTSP/RTP (H.264, H.265), Low-Latency HLS (H.264, H.265), WebRTC (H.264, VP8, VP9). AV1 est disponible dans la version professionnelle.
  • Open WebRTC Toolkit Media Server. RTMP, RTSP/RTP, WebRTC. (H.264, VP8, H.265, VP9).
  • OvenMediaEngine. RTMP, RTSP/RTP, SRT, WebRTC -> RTMP, Low-Latency HLS, WebRTC (VP8, H.264). AV1 dans une prochaine version est en discussion.

Plateformes de « live streaming » sous licence Open Source :

  • Kerberos.io. RTSP (H.264), WebRTC. Plateforme de vidéosurveillance.

Plateformes de « live streaming » sous licence non Open Source (liste non exhaustive) :

  • Agora Broadcast Streaming. -> WebRTC (VP8, H.264).
  • Ant Media. Pour la version commerciale : [RTMP, RTSP/RTP, SRT, WebRTC] -> WebRTC, RTMP ->  RTMP, RTSP/RTP -> RTSP/RTP. La version Open Source est limitée aux protocoles à forte latence. Vidéo encodée en H.264 ou VP8.
  • Dolby.io. [RTMP (H.264), SRT, WebRTC (H.264, H.265, VP8, VP9, AV1)] -> WebRTC.
  • LiveU Studio à Strasbourg. [RTMP, RTP, SRT, WebRTC] -> [RTMP, SRT, WebRTC]. Vidéo encodée en H.264 ou H.265.
  • nanoStream. [RTMP (H.264), RTSP, SRT (H.264), WebRTC] -> Low Latency HLS.
  • Nimble Streamer de Softvelum. [RTMP (H.264, H.265, AV1), RTSP/RTP (H.264, VP8, H.265, VP9), Low Latency HLS (H.264, H.265), SRT (H.264, H.265, AV1), RIST (H.264, H.265, AV1), WebRTC (H.264, VP8, H.265, VP9)] -> [RTMP (H.264), RTSP/RTP (H.264, VP8, VP9), Low Latency HLS (H.264), SRT (H.264), RIST (H.264)].
  • Restream. Basée sur le serveur de vidéoconférence Mediasoup.
  • WOWZA. [RTMP, SRT (H.264, H.265), WebRTC] -> Low Latency HLS, WebRTC.
  • Zixi. Diffusion via le réseau 5G.

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


Logotype licence CC BY-SAAuteur : 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 continu de ZDF à Mayence © Olaf Kosinsky / Wikimedia Commons, licence CC BY-SA 3.0 Deutschland.

N’hésitez pas à signaler les erreurs et à commenter cet article ci-dessous.

1 thought on “Diffusion d’une vidéo en continu et en direct sur le Web

Laisser un commentaire