Table des matières
Diffusion vidéo live - streaming
Diffuser de la vidéo en direct sur le net : le streaming ou webcasting live
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.
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://fr.justin.tv/ login : labomedia passwd : ??????
- http://www.livestream.com/ : Livestream, autre plateforme de streaming
- http://www.ustream.tv/ : le petit troisième
- http://www.livestream.com/procaster/ : Procaster fait encore mieux car il permet également de diffuser en streaming ce qui se passe sur votre bureau d'ordinateur, ça peut permettre de faire des présentations type powerpoint à distance
- Selfworld : http://www.selfworld.net/ projet d'Yvan Chabaneau (rest in peace !)
- 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
- http://www.rayv.com/WhatIsRayV/Overview : projet R&D pour diminuer le cout du streaming
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
- MeetJitSi : pour faire de la visioconférence via le navigateur web en utilisant la technologie WebRTC
- en utilisant des sites qui proposent des applications de visioconférences http://flashmeeting.open.ac.uk, voir Tuto
- en utilisant ou installant une appli web comme bigbluebutton
- à travers des mondes virtuels : second life, open sim, croquet, voir le monde open sim développé par Medias Cités
Faire du streaming sur son ordinateur / serveur
Plate forme de streaming gratuite
- Giss.tv : belle plateforme indépendante et non commerciale de streaming audio vidéo basée 100% sur des outils open source, bravo ! des ressources (en anglais) pour utiliser cette plateforme
Distribution Linux adaptées au streaming et utilisables sans installation
- * Dynebolic : distribution linux tout terrain comportant des outils de streaming, ainsi que sa petite soeur plus hi-tech, la pure-dyne http://code.goto10.org/projects/puredyne/
- APODIO: pleins d'outils intégrés + un serveur icecast un tutoriel de nos amis de Ping
- Sahabuntu : spécialement développée en lien avec la plateforme giss.tv mais utilisable avec n'importe quel serveur icecast
Logiciels pour encoder la vidéo
- OBS Studio : le petit dernier, plein de fonctions, facile à utiliser, marche sur les 3 OS
- 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”
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| 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}: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}"}'
- ffmpeg2theora : en mode ligne de commande, légéreté assurée !
- Les ressources de giss.tv : http://giss.tv/wiki/index.php/Streaming_Tools
Intégrer son stream video dans une page web
Mode HTML5
<HTML> <video width="320" height="240" controls="" src="http://laboratoryplanet.org:8000/labo.ogg" autoplay="" tabindex="0"> </video> </HTML>
Streamer avec OBS Studio vers un serveur Icecast et / ou youtube - Peertube
Open Broadcast Studio est un super soft libre pour le streaming audio vidéo https://obsproject.com/fr
- Un bon tutoriel : https://epir.at/2018/03/08/obs-icecast-streaming/
- Un paquet Obs-studio prêt à l'emploi pour Debian Stretch obs-studio_20190420-git-1_amd64.deb
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
Les configurations : Type : Sortie Personnalisée (FFmpeg) Chemin d'accès ou URL
icecast://source:****@labomedia.org:8000/video.ts
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 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 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: 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
<!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> <script src="videojs.hls.min.js"></script> <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>
Voir plus plus d'infos :
- Tuner icecast pour OBS https://epir.at/2018/03/08/obs-icecast-streaming/
Streaming vidéo sur Android
- Possible avec 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
Etat des lieux des possibilités
Du stream en H264
- via gstreamer: gstreamer.freedesktop.org gst plugins ugly plugins x264enc
- 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
sudo add-apt-repository ppa:gstreamer-developers
- * gstreamer et le h264 http://blog.nicolargo.com/2009/06/gstreamer-et-le-codec-x264.html
- gstreamer vs caméra axis ip http://blog.nicolargo.com/2009/04/gstreamer-aime-les-cameras-ip-axis.html
- une bonne ressource avec des exemples de pipeline http://blog.nicolargo.com/2009/02/jai-streame-avec-gstreamer.html
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| http://forum.sourcefabric.org/discussion/comment/27755#sthash.XS4JT0MG.dpuf]]
serveur de stream
- Icecast2 : indétronable, accepte du stream audio vidéo (au format théora en ogg) en nombre selon les capacités du serveur et du tuyau internet qui y est raccordé
- flumotion : une suite d'outils opensource avec éventuellement un support commercial par flumotion.com
- 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
- Apple Darwin Streaming Server : permet de streamer du h264 sur une base MacOS
- 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
- Sa chaine de télé chez free
- le multicast, IPV6
- L'alternative open source : freej comme régie de montage/tournage en ligne