======Diffusion vidéo live - streaming====== ===== Diffuser de la vidéo en direct sur le net : le streaming ou webcasting live ===== {{media_02:4397f1.png|4397f1.png 4397f1.png}} ==== 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**\\ 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 ==== * [[https://meet.jit.si//|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 [[http://wiki.crao.net/index.php/FlashMeeting|Tuto]] * en utilisant ou installant une appli web comme [[http://www.bigbluebutton.org/|bigbluebutton]] * à travers des mondes virtuels : second life, open sim, [[http://www.opencroquet.org/index.php/Screenshots/Videos|croquet]], voir le [[http://opensim.medias-cite.org/|monde open sim développé par Medias Cités]] ==== Faire du streaming sur son ordinateur / serveur ==== === Plate forme de streaming gratuite === * [[http://giss.tv/|Giss.tv]] : belle plateforme indépendante et non commerciale de streaming audio vidéo basée 100% sur des outils open source, bravo ! [[http://giss.tv/wiki/index.php/Main_Page|des ressources (en anglais) pour utiliser cette plateforme]] === Distribution Linux adaptées au streaming et utilisables sans installation === * * [[http://dynebolic.org/|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/ * [[http://www.apodio.org/?tag=streaming|APODIO]]: pleins d'outils intégrés + un serveur icecast [[http://www.pingbase.net/wordpressfr/res-sources/apodio-1-webradio-de-a-a-z-en-4-clics|un tutoriel de nos amis de Ping]] * [[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 {{ media_12:streaming.jpg }} === Logiciels pour encoder la vidéo === * [[https://obsproject.com/ | OBS Studio]] : le petit dernier, plein de fonctions, facile à utiliser, marche sur les 3 OS * [[http://gollum.artefacte.org/tss/|Theora Streaming Studio]] : facile à utiliser et performant * [[http://mpeg4ip.sourceforge.net/|MPEG4Live]] : à tester ... * [[http://www.videolan.org/vlc/|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" * [[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]] * **** {{media_07:icecast_vlc.png|fig: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| 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}"}' * [[http://v2v.cc/~j/ffmpeg2theora/|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** ==== 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 {{ media_09: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 {{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 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 [[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 videojs-contrib-hls embed

Video.js Example Embed

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

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/ ==== 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 ==== === 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|blogs.technet.com: html5 ce qu'il faut savoir sur la balise video]] * http://www.flumotion.com/blog/the-current-state-of-html5-video 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|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 * transcodage http://blog.nicolargo.com/2010/07/scripts-de-transcodage-de-de-videos.html * une bonne ressource avec des exemples de pipeline http://blog.nicolargo.com/2009/02/jai-streame-avec-gstreamer.html Du stream avec vmc * Une ressource : http://stackoverflow.com/questions/6297348/vlc-record-webcam-and-stream-to-chrome-linux === 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 ==== * [[http://www.icecast.org/|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é * [[http://flumotion.net/|flumotion]] : une suite d'outils opensource avec éventuellement un support commercial par [[http://www.flumotion.com/en/|flumotion.com]] * Configuration http://blog.nicolargo.com/2010/04/configuration-pas-a-pas-dun-serveur-de-streaming-flumotion.html * [[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 * [[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 ===== * Sa chaine de télé chez [[http://www.free.fr/adsl/pages/television/tv-perso.html|free]] * le multicast, IPV6 * L'alternative open source : freej comme régie de montage/tournage en ligne ===== Réf ===== * [[http://www.icecast.org/3rdparty.php|Logiciels windows, Mac Os, Linux fonctionnant avec icecast (lecture et encodage)]] * [[http://rezal404.org/wikini/wakka.php?wiki=FaireSaRadioMenu|Le Wiki de radio404 et sa mediabox404]] {{tag>bj streaming video}}