Diffusion vidéo live - streaming

De Centre de Ressources Numériques - Labomedia
Aller à : Navigation, rechercher

Diffuser de la vidéo en direct sur le net : le streaming ou webcasting live

4397f1.png

Le Streaming ça marche comment ?

Caméra + micro > ordinateur > logiciel d'encodage > internet > serveur de streaming >>> internautes qui regardent ou écoutent le flux
Attention, comme nous sommes principalement connecté au net grace à de l'ADSL, nous avons moins de débit pour envoyer du flux (encoder) que pour le regarder

Utiliser des portails de streaming

Ces portails permettent de faire de la diffusion de vidéo en direct sur son site sans plus de matériel qu'une caméra ou une webcam et un ordinateur connecté à Internet, le tout en quelques clics</br> Possibilité de copier coller un code dans un billet de blog pour intégrer ce flux vidéo dans l'une de vos pages

Portails gratuits

  • http://bambuser.com/ : Bambuser permet de faire du streaming depuis son téléphone portable (moderne), soit en 3G soit connecté à un réseau wifi
  • http://qik.com/ : un deuxième !
  • http://www.flixwagon.com/ : équivalent à Bambuser et permettant en plus de suivre votre position si votre téléphone est équipé d'un GPS

Intégrer des Widgets vidéo dans son site

une beau stock de widgets par le cher Loic Hay : http://widgetolab.weebly.com/

Visioconférence, réunions virtuelles

Faire du streaming sur son ordinateur / serveur

Plate forme de streaming gratuite

Distribution Linux adaptées au streaming et utilisables sans installation

Streaming.jpg

Logiciels pour encoder la vidéo

  • Theora Streaming Studio : facile à utiliser et performant
  • MPEG4Live : à tester ...
  • VLC permet depuis la version 9 de faire du stream, en utilisant notamment l'interface graphique et le bouton "Diffuser" en ayant sélectionné auparavant dans le menu fichier le "Périphérique de capture"
Icecast vlc.png

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

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=1,acodec=mp3,ab=32,channels=2}:duplicate{dst=std{access=shout,mux=ogg,dst=source:**********@laboratoryplanet.org:8000//labo.ogg}}'
option finale --loop ???

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


put "source" as username or login, followed by a column and a password.it seems putting "source" make work vlc

example : :sout=#transcode{acodec=vorb,ab=128,channels=2,samplerate=44100}:std{access=shout,mux=ogg,dst=source:0000@192.168.1.4:8000/live}

Macos

/Applications/VLC.app/Contents/MacOS/VLC qtcapture:// --sout='#duplicate{dst=display,dst="transcode{vcodec=theo,vb=256,acodec=vorb,ab=64,vfilter=canvas{width=320,height=240,canvas-aspect=4:3}}:standard{mux=ogg,dst=source:****@laboratoryplanet.org:8000/labo.ogg,access=shout}"}' 

Macos essai laviemanifeste : comment choisir la deuxième webcam ?

/Applications/VLC.app/Contents/MacOS/VLC qtcapture:// --sout='#duplicate{dst=display,dst="transcode{vcodec=theo,vb=128,acodec=vorbVLC qtcapture://,ab=32,vfilter=canvas{width=320,height=240,canvas-aspect=4:3}}:standard{mux=ogg,dst=source:rclabo01@labomedia.org:8000/labo.ogg,access=shout}"}'

Intégrer son stream video dans une page web

Mode HTML5

<video width="320" height="240" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0"></video>

Code pour compatibilité HTML4 avec applet cortado comme lecteur alternatif

<video width="480" height="360" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0"><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><a_espace_href="http://giss.tv/dmmdb//com.fluendo.player.Cortado.class" class="rlarqfzxhwppnvznpczc"></a></video>

Attention, remplacer dans le code précédent <a_espace_href="http://giss.tv/dmmdb//com par "a href"

http://laboratoryplanet.org:8000/labo.ogg

Faire du streaming vers les smartphones et tablettes via la balise video en HTML5

Etat des lieux des possibilités

Du stream en H264

 sudo add-apt-repository ppa:gstreamer-developers

Du stream avec vmc

Exemples de pipeline gstreamer

Stream vers un serveur icecast basse qualité à partir d'une webcam gst-launch-0.10 v4l2src ! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv,width=320,height=240 ! theoraenc quality=16 ! queue ! oggmux name=mux alsasrc ! audio/x-raw-int,rate=22050,channels=1,depth=8 ! queue ! audioconvert ! vorbisenc ! queue ! mux. mux. ! queue ! shout2send ip=labomedia.org port=8000 password=********** mount=/trial5.ogg

gst-launch-0.10 v4l2src device=/dev/video0 ! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv,width=320,height=240 ! videorate skip-to-first=1 ! video/x-raw-yuv,framerate=25/1 ! vp8enc threads=2 quality=4 speed=0 max-latency=25 mode=vbr ! queue ! webmmux streamable=true name=mux jackaudiosrc connect=none ! audio/x-raw-float, channels=2 ! queue ! audioconvert ! vorbisenc quality=0.1 ! queue  ! mux. mux. ! queue ! shout2send ip=xxxx port=xxxx username=xxx password=xxx mount=/video.webm streamname=xxxx description=xx genre=xxx - See more at: http://forum.sourcefabric.org/discussion/comment/27755#sthash.XS4JT0MG.dpuf

serveur de stream

L'avenir du futur

  • Sa chaine de télé chez free
  • le multicast, IPV6
  • L'alternative open source : freej comme régie de montage/tournage en ligne

Réf