Outils pour utilisateurs

Outils du site


diffusion_video_live_-_streaming

Diffusion vidéo live - streaming

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

4397f1.png 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.

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

  • 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”
  • fig:Icecast_vlc.png

Avec OBS Studio vers un serveur Icecast et / ou youtube

Open Broadcast Studio est un super soft libre pour le streaming audio vidéo https://obsproject.com/fr

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

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}"}'

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>

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 :

Streaming vidéo sur Android

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

Etat des lieux des possibilités

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

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

diffusion_video_live_-_streaming.txt · Dernière modification: 2020/05/14 20:03 par Benjamin Labomedia