Outils pour utilisateurs

Outils du site


diffusion_video_live_-_streaming

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
diffusion_video_live_-_streaming [2018/09/05 18:52] Benjamin Labomediadiffusion_video_live_-_streaming [2023/10/10 11:44] (Version actuelle) – [Le Streaming ça marche comment ?] Benjamin Labomedia
Ligne 2: Ligne 2:
 ===== Diffuser de la vidéo en direct sur le net : le streaming ou webcasting live ===== ===== Diffuser de la vidéo en direct sur le net : le streaming ou webcasting live =====
  
-{{:4397f1.png|4397f1.png 4397f1.png}}+{{media_02:4397f1.png|4397f1.png 4397f1.png}}
  
 ==== Le Streaming ça marche comment ? ==== ==== Le Streaming ça marche comment ? ====
 +
 +**La présente page a quelque peu pris la poussière en 2023, le streaming vidéo est désormais extrêmement simple avec des plateformes comme Peertube ou Youtube$, voir la page de [[streaming_video_en_direct_un_evenement_via_peertube|Documentation d'un dispositif de streaming live]] pour des infos plus actualisée.**
 +
 +Le principe :
  
 **Caméra + micro > ordinateur > logiciel d'encodage > internet > serveur de streaming >>> internautes qui regardent ou écoutent le flux**\\ **Caméra + micro > ordinateur > logiciel d'encodage > internet > serveur de streaming >>> internautes qui regardent ou écoutent le flux**\\
Ligne 53: Ligne 57:
     * [[http://giss.tv/wiki/index.php/Sahabuntu_giss_cd_for_streaming|Sahabuntu]] : spécialement développée en lien avec la plateforme giss.tv mais utilisable avec n'importe quel serveur icecast     * [[http://giss.tv/wiki/index.php/Sahabuntu_giss_cd_for_streaming|Sahabuntu]] : spécialement développée en lien avec la plateforme giss.tv mais utilisable avec n'importe quel serveur icecast
  
-{{ Streaming.jpg }}+{{ media_12:streaming.jpg }}
  
 === Logiciels pour encoder la vidéo === === Logiciels pour encoder la vidéo ===
Ligne 63: Ligne 67:
     * [[http://musa.poperbu.net/index.php/tecnologia-seccions-30/streaming-seccions-36/91-vlc-11-com-a-source-client-de-icecast-ii%7CVoir|ce tutoriel]]     * [[http://musa.poperbu.net/index.php/tecnologia-seccions-30/streaming-seccions-36/91-vlc-11-com-a-source-client-de-icecast-ii%7CVoir|ce tutoriel]]
  
-  * **** {{:Icecast_vlc.png|fig:Icecast_vlc.png}} +  * **** {{media_07:icecast_vlc.png|fig:Icecast_vlc.png}}
-== Avec OBS Studio vers un serveur Icecast == +
-  * Un bon tutoriel : https://epir.at/2018/03/08/obs-icecast-streaming/ +
-Fenêtre principale+
  
-{{::osbconfig.png?direct&600|}} +=== sinon en ligne de commande ===
-{{::obsstudioconfigicecastlabomedia.png?direct&600|}} +
-== sinon en ligne de commande ==+
  
   vlc -vv /home/bbk/dvd/movie.avi :sout=#transcode{vcodec=theora,vb=256,scale=1,acodec=vorbis,ab=32,channels=1}:std{access=shout,mux=ogg,url=videosource:passwd@laboratoryplanet.org:8000}   vlc -vv /home/bbk/dvd/movie.avi :sout=#transcode{vcodec=theora,vb=256,scale=1,acodec=vorbis,ab=32,channels=1}:std{access=shout,mux=ogg,url=videosource:passwd@laboratoryplanet.org:8000}
 +
   :sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=passwd@laboratoryplanet.org:8000/testuo.ogg}}   :sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=passwd@laboratoryplanet.org:8000/testuo.ogg}}
  
-  vlc -vv "E:\Tetsuo.2_(Divx5.fr).avi" :sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=passwd@laboratoryplanet.org:8000/laaab.ogg}}+    vlc -vv "E:\Tetsuo.2_(Divx5.fr).avi" :sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=passwd@laboratoryplanet.org:8000/laaab.ogg}}
  
   vlc [[file://E:\Tetsuo.2_(Divx5.fr).avi|  file://E:\Tetsuo.2_(Divx5.fr).avi]]   --sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:passwd@88.191.69.150:8000/laaab.ogg}}   vlc [[file://E:\Tetsuo.2_(Divx5.fr).avi|  file://E:\Tetsuo.2_(Divx5.fr).avi]]   --sout=#transcode{vcodec=theo,vb=400,scale=0.5,acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:passwd@88.191.69.150:8000/laaab.ogg}}
Ligne 81: Ligne 81:
   vlc [[file://E:\Tetsuo.2_(Divx5.fr).avi|  file://E:\Tetsuo.2_(Divx5.fr).avi]]   --sout=#transcode{vcodec=theo,vb=400,scale=0.5}:std{access=shout,mux=ogg,dst=source:passwd@88.191.69.150:8000/laaab.ogg}   vlc [[file://E:\Tetsuo.2_(Divx5.fr).avi|  file://E:\Tetsuo.2_(Divx5.fr).avi]]   --sout=#transcode{vcodec=theo,vb=400,scale=0.5}:std{access=shout,mux=ogg,dst=source:passwd@88.191.69.150:8000/laaab.ogg}
  
-//' Entrée live audio video v4l//'+Entrée live audio video v4l
  
   vlc v4l:// :v4l-vdev=/dev/video0 :v4l-adev=/dev/dsp :v4l-norm=0 :v4l-frequency=0 :v4l-caching=500 :v4l-vdev="/dev/video0" :v4l-adev="/dev/dsp" :v4l-chroma="" :v4l-fps=-1 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-norm=3 :v4l-frequency=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=0 :v4l-height=0 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 :sout=#transcode{vcodec=theo,vb=100,scale=0.5,acodec=mp3,ab=32,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:*****@laboratoryplanet.org:8000//amaisonpop.ogg}}   vlc v4l:// :v4l-vdev=/dev/video0 :v4l-adev=/dev/dsp :v4l-norm=0 :v4l-frequency=0 :v4l-caching=500 :v4l-vdev="/dev/video0" :v4l-adev="/dev/dsp" :v4l-chroma="" :v4l-fps=-1 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-norm=3 :v4l-frequency=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=0 :v4l-height=0 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 :sout=#transcode{vcodec=theo,vb=100,scale=0.5,acodec=mp3,ab=32,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:*****@laboratoryplanet.org:8000//amaisonpop.ogg}}
Ligne 89: Ligne 89:
   option finale --loop ???   option finale --loop ???
  
-**Entrée live audio video v4l2**+Entrée live audio video v4l2
  
   vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=theo,vb=300,scale=1,acodec=vorb,ab=64,channels=2,samplerate=22050}:std{access=shout,mux=ogg,dst=source:*********@labomedia.org:8000/atest.ogv}" :no-sout-rtp-sap :no-sout-standard-sap :sout-all :ttl=1 :sout-keep   vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=theo,vb=300,scale=1,acodec=vorb,ab=64,channels=2,samplerate=22050}:std{access=shout,mux=ogg,dst=source:*********@labomedia.org:8000/atest.ogv}" :no-sout-rtp-sap :no-sout-standard-sap :sout-all :ttl=1 :sout-keep
Ligne 108: Ligne 108:
   * Les ressources de giss.tv : http://giss.tv/wiki/index.php/Streaming_Tools   * Les ressources de giss.tv : http://giss.tv/wiki/index.php/Streaming_Tools
  
-=== Intégrer son stream video dans une page web ===+==== Intégrer son stream video dans une page web ====
  
 **Mode HTML5** **Mode HTML5**
 +<code html>
 <HTML> <HTML>
 <video width="320" height="240" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0"> <video width="320" height="240" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0">
 </video> </video>
 </HTML> </HTML>
-**Code pour compatibilité HTML4 avec applet cortado comme lecteur alternatif**+</code>
  
-<HTML> +==== Streamer avec OBS Studio vers un serveur Icecast et ou youtube - Peertube ==== 
-<video width="480" height="360" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0"> +Open Broadcast Studio est un super soft libre pour le streaming audio vidéo https://obsproject.com/fr   
-</HTML> +  * Un bon tutoriel https://epir.at/2018/03/08/obs-icecast-streaming/ 
-<html><applet width="480" height="360" mayscript="" id="cortado" archive="cortado.jar" codebase="http://giss.tv/dmmdb//cortado" code="com.fluendo.player.Cortado.class"><param value="http://laboratoryplanet.org:8000/labo.ogg" name="url"><param value="true" name="local"><param value="true" name="keepAspect"><param value="true" name="video"><param value="true" name="audio"><param value="64" name="bufferSize"><param value="16" name="statusHeight"><param value="auto" name="showStatus"><param value="true" name="seekable"><param value="113" name="duration"></applet></html><a_espace_href="http://giss.tv/dmmdb//com.fluendo.player.Cortado.class" class="rlarqfzxhwppnvznpczc"><html></a></html>+  * Un paquet Obs-studio prêt à l'emploi pour Debian Stretch {{ media_09:obs-studio_20190420-git-1_amd64.deb |}}
  
-<HTML>+Pour utiliser OBS pour envoyer un stream à icecast, il faut feinter et utiliser la fonction enregistrement plutôt que streaming (du coup ça permet de streamer vers icecast et youtube en même temps !), avec les paramètres ci-dessous 
 +{{media_10:osbconfig.png?direct&600|}} 
 +{{media_10:obsstudioconfigicecastlabomedia.png?direct&600|}} 
 + 
 +**Les configurations :** 
 +Type : Sortie Personnalisée (FFmpeg) 
 +Chemin d'accès ou URL 
 +<code>icecast://source:****@labomedia.org:8000/video.ts</code> 
 +Format du conteneur : mpegts 
 +Paramètre du muxer  
 +  content_type=video/m2ts ice_genre='6-Hidden' ice_name='labomedia video stream' ice_description=event ice_url='https://labomedia.org' 
 +   
 +Débit vidéo : voir [[https://support.google.com/youtube/answer/2853702?hl=en|les débits conseillés sur youtube en fonction de la résolution]] 
 +  4500 Kbps 
 +Intervalle d'images clefs  
 +  50 
 +Encodeur vidéo : libx264 
 +Débit audio 
 +  160 Kbps 
 +Encodeur audio : aac 
 + 
 +Pour compléter la config et donner un genre, un titre au stream, dans les "Paramètres du muxer", on peut mettre : 
 +  content_type=video/m2ts ice_genre='numerique' ice_name='je m appelle stream' ice_description=beau ice_url='https://labomedia.org' 
 +   
 +Pour compiler [[https://github.com/obsproject/obs-studio/wiki/Install-Instructions#debian-based-build-directions|OBS sous Debian 9]], il faut upgrader CMAKE comme cela : https://askubuntu.com/questions/829310/how-to-upgrade-cmake-in-ubuntu 
 + 
 +Pour envoyer un flux depuis OBS-Studio: [[https://obsproject.com/forum/resources/obs-studio-send-an-udp-stream-to-a-second-pc-using-obs.455/|Send an UDP Stream to a second PC using OBS]] 
 + 
 +==== Transcoder un stream provenant de OBS via Icecast et l'intégrer dans une page web avec un player HTML5 ==== 
 +On transcode la vidéo provenant de OBS pour la transformer au format HLS, du stream transporté par HTTP 
 +  ffmpeg -i http://stream.p-node.org/flusser.ts -s 640x400 -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out_%6d.ts 
 + 
 +On intégre la vidéo transcodée à l'aide d'un player HTML5 + javascript 
 +<code> 
 +<!DOCTYPE html> 
 +<html> 
 +<head> 
 +<meta charset=utf-8 /> 
 +<title>videojs-contrib-hls embed</title> 
 + 
 +<link href="//vjs.zencdn.net/7.3.0/video-js.min.css" rel="stylesheet"> 
 +<script src="//vjs.zencdn.net/7.3.0/video.min.js"></script> 
 + 
 +</head> 
 +<body> 
 +  <h1>Video.js Example Embed</h1> 
 + 
 +<video id=flusser-video width=640 height=400 class="video-js vjs-default-skin" poster="../flusser/Vilem_Flusser_1940.jpg" controls autoplay="true" preload="auto"> 
 +  <source 
 +     src="playlist.m3u8" 
 +     type="application/x-mpegURL">
 </video> </video>
-</HTML+<script src="videojs.hls.min.js"></script
-Attention, remplacer dans le code précédent <a_espace_href="http://giss.tv/dmmdb//com par "a href"+<script> 
 +var player = videojs('flusser-video'); 
 +player.play(); 
 +</script> 
 + 
 +<p> la ligne de commande brute de transcodage coté serveur : ffmpeg -i http://stream.p-node.org/flusser.ts -s 640x400 -c:v libx264 -f ssegment -hls_flags delete_segments -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 10 out_%6d.ts à lancer dans le répertoire où se trouve la page</p> 
 +</body> 
 +</html> 
 +</code> 
 +Voir plus plus d'infos : 
 +  * http://videojs.github.io/videojs-contrib-hls/ 
 +  * https://stackoverflow.com/questions/39431714/ffmpeg-transcode-to-live-stream 
 +  * https://docs.videojs.com/tutorial-setup.html 
 +  * https://github.com/videojs/videojs-contrib-hls 
 +  * Tuner icecast pour OBS https://epir.at/2018/03/08/obs-icecast-streaming/ 
  
-http://laboratoryplanet.org:8000/labo.ogg+==== Streaming vidéo sur Android ==== 
 +  * Possible avec [[https://f-droid.org/en/packages/info.dvkr.screenstream/|ScreenStream logiciel Android]] qui envoie l'écran de l'Android (pas le son) en streaming
  
 ==== Faire du streaming vers les smartphones et tablettes via la balise video en HTML5 ==== ==== Faire du streaming vers les smartphones et tablettes via la balise video en HTML5 ====
Ligne 134: Ligne 200:
 === Etat des lieux des possibilités === === Etat des lieux des possibilités ===
  
-  * http://blogs.technet.com/b/stanislas/archive/2011/06/21/html5-ce-qu-il-faut-savoir-sur-la-balise-video.aspx+  * [[http://blogs.technet.com/b/stanislas/archive/2011/06/21/html5-ce-qu-il-faut-savoir-sur-la-balise-video.aspx|blogs.technet.com: html5 ce qu'il faut savoir sur la balise video]]
   * http://www.flumotion.com/blog/the-current-state-of-html5-video   * http://www.flumotion.com/blog/the-current-state-of-html5-video
  
 Du stream en H264 Du stream en H264
  
-  * via gstreamer http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/gst-plugins-ugly-plugins-x264enc.html+  * via gstreamer: [[http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/gst-plugins-ugly-plugins-x264enc.html|gstreamer.freedesktop.org gst plugins ugly plugins x264enc]]
     * d'autres ressources sur gstreamer http://blog.nicolargo.com/gstreamer     * d'autres ressources sur gstreamer http://blog.nicolargo.com/gstreamer
     * installer toutes les composantes de gstreamer sous ubuntu http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html     * installer toutes les composantes de gstreamer sous ubuntu http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html
Ligne 167: Ligne 233:
   * [[http://www.kaltura.or|kaltura]] : une application coté serveur qui peut être combinée à du Red5 pour faire du stream live, version payante plus complète que la version open source dite Community CE   * [[http://www.kaltura.or|kaltura]] : une application coté serveur qui peut être combinée à du Red5 pour faire du stream live, version payante plus complète que la version open source dite Community CE
   * [[http://dss.macosforge.org/post/40/|Apple Darwin Streaming Server]] : permet de streamer du h264 sur une base MacOS   * [[http://dss.macosforge.org/post/40/|Apple Darwin Streaming Server]] : permet de streamer du h264 sur une base MacOS
 +  * [[https://owncast.online/|Owncast is a self-hosted live video and web chat server]] for use with existing popular broadcasting software : un petit nouveau à regarder
  
 ===== L'avenir du futur ===== ===== L'avenir du futur =====
Ligne 180: Ligne 247:
  
  
-{{tag>bj streaming video verified}}+{{tag>bj streaming video}}
diffusion_video_live_-_streaming.1536173570.txt.gz · Dernière modification : 2018/09/05 18:52 de Benjamin Labomedia