======AstroFlux Technique====== ===== Les formats vidéo du stream ===== * Des éléments génériques sur les formats vidéo supportés par les différents fureteurs / OS http://diveintohtml5.info/video.html * Vidéo for everybody : comment faire un player HTML5 avec fallback flash http://camendesign.com/code/video_for_everybody * Le mystère derrière le delay du streaming + format RTSP vs RTMP http://forum.videohelp.com/threads/339852-Streaming-considerations-RTMP-vs-RTSP-vs-HLS-vs-MMS-vs ? * Les formats du HTML5 : http://en.wikipedia.org/wiki/HTML5_video http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5_Media%29 http://en.wikipedia.org/wiki/Comparison_of_HTML5_and_Flash * Flash vs iOS : http://www.overdigital.com/2011/12/27/hls-vs-hds-what-is-the-difference-and-why-you-should-care/ * Vidéo "Case study - Broadcast and Web Streaming with Gstreamer" : http://gstconf.ubicast.tv/videos/case-study-broadcast-and-web-streaming-with-gstreamer/ * Synchro with Gstreamer http://gstconf.ubicast.tv/videos/displaying-sychronized-video-2/ * HTML5 video and H.264 – what history tells us and why we’re standing with the web http://www.0xdeadbeef.com/weblog/2010/01/html5-video-and-h-264-what-history-tells-us-and-why-were-standing-with-the-web/ * H.264 Royalties: what you need to know http://www.streaminglearningcenter.com/articles/h264-royalties-what-you-need-to-know.html * Google WebM pour concurrencer le H.264 http://www.presence-pc.com/actualite/WebM-Google-39382/ * http://www.appleinsider.com/articles/12/03/14/mozilla_considers_h264_video_support_after_googles_vp8_fails_to_gain_traction.html7 * Synchro audio video, les différentes couches du stream détaillées : http://users.ece.cmu.edu/~peha/streaming_video.pdf * Un PDF générique sur les techniques de streaming http://oa.upm.es/1055/1/PFC_PABLO_RIESGO_FERREIRO.pdf * La différence entre streaming et progressive download http://www.iis.net/learn/media/windows-media-services/windows-media-server-or-web-server * Un ensemble de ressources autour de l'Open Video Forum http://wiki.creativecommons.org/Open_Video_Forum * Un slide sur la compression et le streaming http://www.slideshare.net/samir/compression-video-pour-la-diffusion-web * stream.js pour embed de flux, voir discussion https://groups.google.com/forum/?fromgroups&hl=en#!topic/mistserver/yWWD3Cn3wk4 à propos de http://mistserver.org * Les formats préconisés pour youtube live https://support.google.com/youtube/answer/2853702?hl=en&topic=2853713&ctx=topic * les espaces de couleurs http://linuxtv.org/downloads/v4l-dvb-apis/ * les formats supportés par Android http://developer.android.com/guide/appendix/media-formats.html ===== Wowza ressources ===== * Le retour du SMIL ! http://www.wowza.com/forums/content.php?299-How-to-create-and-play-SMIL-files-with-streams-created-by-Wowza-Transcoder * La page du [[http://www.w3.org/AudioVideo/|w3c concernant le SMIL]] * synchr A/V http://www.wowza.com/forums/content.php?79 ===== Gstreamer ressources ===== * Tuto OLPC sur Gstreamer pour les bases gst-launch-0.10 v4l2src ! ffmpegcolorspace ! ximagesink http://wiki.laptop.org/go/GStreamer * http://docs.gstreamer.com/display/GstSDK/gst-launch * Tuto français http://g.eckenschwiller.free.fr/Tutoriels/Utilisation/gstreamer.php * Un autre générique http://paiiou.free.fr/Tutoriels/Utilisation/gst1.php * Un ensemble de ressources sur Gstreamer : * Streaming vidéo SD avec Gstreamer http://blog.nicolargo.com/2010/02/streaming-video-hd-avec-gstreamer.html * http://blog.nicolargo.com/2011/03/un-serveur-rtsp-base-sur-gstreamer.html * http://processors.wiki.ti.com/index.php/Example_GStreamer_Pipelines#H.264_RTP_Streaming * Install Composantes http://blog.nicolargo.com/2010/05/installation-de-tout-les-composants-gstreamer-sous-ubuntu.html * Exemple pipeline gstreamer http://www.wowza.com/forums/showthread.php?24231-Gtreamer-Pipeline-enable-username-password-in-wowza * SDP File https://developer.ridgerun.com/wiki/index.php/Introduction_to_network_streaming_using_GStreamer#Generating_a_SDP_file_from_a_streaming_pipeline * Streamer avec gstreamer > wowza http://www.wowza.com/forums/showthread.php?1599-Using-gstreamer-0-10-with-Wowza gst-launch-0.10 -vvv videotestsrc ! queue ! x264enc byte-stream=true bitrate=300 ! rtph264pay ! udpsink port=5000 host=127.0.0.1 sync=false ok ci-dessous gst-launch-0.10 -vvv videotestsrc is-live=true ! x264enc byte-stream=true bitrate=300 ! queue ! ffmux_mpegts ! udpsink port=10000 host=10.0.0.10 -v * Latence : http://www.wowza.com/forums/showthread.php?16675-advice-on-lowering-latency-with-gstreamer * Synchro clock streaming http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+12%3A+Streaming * Icecast2 http://www.vinux.info/index.php/2009/12/14/streaming-audiovideo-avec-gstreamer-et-icecast/ Mire # gst-launch-0.10 videotestsrc ! ffmpegcolorspace ! video/x-raw-yuv,width=320,height=240 ! clockoverlay ! cairotextoverlay text="stream currently unavailable" shaded-background=true ! theoraenc quality=5 ! queue ! oggmux name=mux audiotestsrc ! audioconvert ! vorbisenc quality=0.1 ! queue ! mux. mux. ! queue ! shout2send ip=127.0.0.1 port=8000 password=monpass mount=mire.ogv Périphérique v4l2 # gst-launch v4l2src ! video/x-raw-yuv,width=320,height=240 ! ffmpegcolorspace ! theoraenc quality=16 ! oggmux ! shout2send ip=labomedia.org port=8000 password=**** mount=live.ogv # gst-launch-0.10 multifilesrc location=logo_2.png ! "image/png,framerate=1/1" ! pngdec ! alphacolor ! alpha method=0 alpha=0.5 ! videomixer name=mixer ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv,width=320,height=240 ! theoraenc quality=16 ! oggmux ! shout2send ip=live.monsite.com port=8000 password=monpass mount=live.ogv v4l2src ! ffmpegcolorspace ! cairotextoverlay text="Plus d'infos - www.monsite.com" shaded-background=true ! clockoverlay halign=right valign=top text="En direct" shaded-background=true ! timeoverlay ! videoscale ! alpha method=0 alpha=1.0  ! mixer. * ressources génériques gstreamer http://www.noah.org/wiki/video_4_linux_2_notes * préréglages caméras uvcdynctrl -s "Focus, Auto" 0 You can then adjust the focus with: uvcdynctrl -s "Focus (absolute)" $amt Where $amt is a number from 0 - 40 ===== Gstreamer vs Wowza ===== * http://www.wowza.com/forums/showthread.php?1599-Using-gstreamer-0.10-with-Wowza/page7 * Des scripts type à télécharger : http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/rtp #!/bin/sh # # A simple RTP server # sends the output of v4l2src as h264 encoded RTP on port 5000, RTCP is sent on # port 5001. The destination is 127.0.0.1. # the video receiver RTCP reports are received on port 5005 # sends the output of autoaudiosrc as alaw encoded RTP on port 5002, RTCP is sent on # port 5003. The destination is 127.0.0.1. # the receiver RTCP reports are received on port 5007 # # .-------. .-------. .-------. .----------. .-------. # |v4lssrc| |h264enc| |h264pay| | rtpbin | |udpsink| RTP # | src->sink src->sink src->send_rtp send_rtp->sink | port=5000 # '-------' '-------' '-------' | | '-------' # | | # | | .-------. # | | |udpsink| RTCP # | send_rtcp->sink | port=5001 # .-------. | | '-------' sync=false # RTCP |udpsrc | | | async=false # port=5005 | src->recv_rtcp | # '-------' | | # | | # .--------. .-------. .-------. | | .-------. # |audiosrc| |alawenc| |pcmapay| | rtpbin | |udpsink| RTP # | src->sink src->sink src->send_rtp send_rtp->sink | port=5002 # '--------' '-------' '-------' | | '-------' # | | # | | .-------. # | | |udpsink| RTCP # | send_rtcp->sink | port=5003 # .-------. | | '-------' sync=false # RTCP |udpsrc | | | async=false # port=5007 | src->recv_rtcp | # '-------' '----------' # # ideally we should transport the properties on the RTP udpsink pads to the # receiver in order to transmit the SPS and PPS earlier. # change this to send the RTP data and RTCP to another host DEST=127.0.0.1 # tuning parameters to make the sender send the streams out of sync. Can be used # ot test the client RTCP synchronisation. #VOFFSET=900000000 VOFFSET=0 AOFFSET=0 # H264 encode from the source VELEM="v4l2src" #VELEM="videotestsrc is-live=1" VCAPS="video/x-raw,width=352,height=288,framerate=15/1" VSOURCE="$VELEM ! queue ! videorate ! videoconvert ! $VCAPS" VENC="x264enc tune=zerolatency byte-stream=true bitrate=300 ! rtph264pay" VRTPSINK="udpsink port=5000 host=$DEST ts-offset=$VOFFSET name=vrtpsink" VRTCPSINK="udpsink port=5001 host=$DEST sync=false async=false name=vrtcpsink" VRTCPSRC="udpsrc port=5005 name=vrtpsrc" # PCMA encode from the source AELEM="autoaudiosrc" #AELEM="audiotestsrc is-live=1" ASOURCE="$AELEM ! queue ! audioresample ! audioconvert" AENC="alawenc ! rtppcmapay" ARTPSINK="udpsink port=5002 host=$DEST ts-offset=$AOFFSET name=artpsink" ARTCPSINK="udpsink port=5003 host=$DEST sync=false async=false name=artcpsink" ARTCPSRC="udpsrc port=5007 name=artpsrc" gst-launch-1.0 -v rtpbin name=rtpbin \ $VSOURCE ! $VENC ! rtpbin.send_rtp_sink_0 \ rtpbin.send_rtp_src_0 ! $VRTPSINK \ rtpbin.send_rtcp_src_0 ! $VRTCPSINK \ $VRTCPSRC ! rtpbin.recv_rtcp_sink_0 \ $ASOURCE ! $AENC ! rtpbin.send_rtp_sink_1 \ rtpbin.send_rtp_src_1 ! $ARTPSINK \ rtpbin.send_rtcp_src_1 ! $ARTCPSINK \ $ARTCPSRC ! rtpbin.recv_rtcp_sink_1 ==== Régler les problèmes ==== * http://www.wowza.com/forums/showthread.php?7856-Gstreamer-lip-sync-issues * http://www.wowza.com/forums/showthread.php?14053-Troubles-with-gstreamer-amp-wowza-server * http://www.wowza.com/forums/showthread.php?24231-Gtreamer-Pipeline-enable-username-password-in-wowza * http://www.wowza.com/forums/showthread.php?7741-Gstreamer-problems ==== Latence ==== * http://www.wowza.com/forums/showthread.php?16675-advice-on-lowering-latency-with-gstreamer ===== VLC ressources ===== * http://www.wowza.com/forums/content.php?90-Using-VLC-as-a-live-stream-encoder-with-Wowza-Server-%28MPEG-TS%29 * http://wiki.videolan.org/Documentation:Modules/screen * https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/ * http://wiki.videolan.org/Documentation:Streaming_HowTo/Advanced_Streaming_Using_the_Command_Line * de bonnes ressources http://perso.univ-lemans.fr/~brichard/video/?doc=Vlc et http://unix.stackexchange.com/questions/58526/trouble-getting-vlc-to-record-from-the-webcam-via-command-line vlc v4l2:///dev/video0 --v4l2-fps=25 --sout '#transcode{venc=x264{keyint=60,profile=main},vcodec=x264,vb=512,scale=1,acodec=mp4a,ab=96,channels=2,samplerate=44100}:rtp{dst=10.0.0.10,port=10000,mux=ts}' cvlc screen:// --screen-mouse-image cursor.png --screen-fps=12 --screen-width=1680 --screen-height=1050 --sout "#transcode{venc=theora,quality:10,scale=0.75,fps=12}:duplicate{dst=std{access=file,mux=ogg,dst=desktop.ogg}}}" --no-sout-audio * d'après http://snipplr.com/view/26837/creating-an-ogg-theora-screencast-with-vlc-on-ubuntu/ ==== vlc vs jack ==== * http://packages.debian.org/sid/vlc-plugin-jack * http://wiki.videolan.org/Documentation:Modules/jack vlc --longhelp --advanced | grep jack VLC media player 2.0.6 Twoflower (revision 2.0.6-0-gbe9623c)      --jack-auto-connect, --no-jack-auto-connect      --jack-connect-regex \\      --jack-input-use-vlc-pace, --no-jack-input-use-vlc-pace      --jack-input-auto-connect, --no-jack-input-auto-connect cvlc v4l2:///dev/video11 --jack-input-auto-connect --jack-auto-connect vlc jack://channels=vlc:ports=1,2 La bonne ligne de commande qui marche (presque) vlc v4l2:///dev/video0 :v4l2-standard= :input-slave=jack://channels=2:ports=.* :live-caching=300 vlc -vvv v4l2:///dev/video1 :v4l2-standard= --input-slave=jack:// :input-slave= :live-caching=300 ===== FFMPEG ressources ===== * http://www.wowza.com/forums/content.php?213-FFmpeg-with-Wowza-Server-%28MPEG-TS%29 voir également http://www.wowza.com/forums/showthread.php?16724-RTSP-with-ffmpeg-and-wowza ffmpeg -re -i "sample.mp4" -vcodec libx264  -vb 150000 -g 60 -vprofile baseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://127.0.0.1:10000?pkt_size=1316| udp://127.0.0.1:10000?pkt_size=1316]] une baseline qui marche avec ma webcam (le baseline ne supportait pas le 4:2:2 cf [[http://ffmpeg-users.933282.n4.nabble.com/x264-baseline-profile-error-td4550056.html|1]] ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video0 -vcodec libx264  -vb 150000 -g 60 -vprofile baseline -level 2.1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts -pix_fmt yuv420p [[udp://10.0.0.10:10012?pkt_size=1316| udp://10.0.0.10:10012?pkt_size=1316]] changer le level 2.1 en level 3 ? * capturer une webcam http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20capture%20a%20webcam%20input ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 * Capturer l'audio avec jack http://www.ffmpeg.org/ffmpeg-devices.html#jack ffmpeg -f jack -i ffmpeg -y home/b01/out.wav * Combiner les deux ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video1 -f avi -vcodec libxvid -b 50000k -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec libmp3lame -ab 320k Testxvid.avi * **En version stream** ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video1 -vcodec libx264  -vb 150000 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://127.0.0.1:10000?pkt_size=1316| udp://127.0.0.1:10000?pkt_size=1316]] * Le pousser sur une device virtuel pour retour image ffmpeg -re -lavfi testsrc -f v4l2 /dev/video1 * Streamer en RTMP avec ffmpeg http://guillaume.vaillant.me/?p=73 ffmpeg -f alsa -ac 2 -i jackplug -f x11grab -r 30 -s 1440x900 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv mplayer [[tv://| tv://]]  -tv driver=v4l2:width=640:height=480:device=/dev/video11:alsa * Générer 4 flux à partir d'un seul http://www.commandlinefu.com/commands/view/8938/create-4-rtp-streams-h264aac-from-a-single-source-with-a-single-ffmpeg-instance... ffmpeg [source specification if needed] -i $src -an -vcodec libx264 -coder 0 -threads 0 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -level 13 -g 15 -crf 25 -s 320x224 -aspect 16:9 -r 15 -b 186000 -vb 186000 -minrate 176700 -maxrate 195300 -bt 9300 -bufsize 262500 -muxrate 195300 -vglobal 1 -f rtp rtp://$dstIP:$dstVideoPort1 -vn -acodec libfaac -async 2 -flags +global_header -ac 1 -ar 44100 -ab 64000 -f rtp rtp://$dstIP:$dstAudioPort1 -newaudio -an -vcodec libx264 -coder 0 -threads 0 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -level 13 -g 20 -crf 25 -s 320x224 -aspect 16:9 -r 20 -b 286000 -vb 286000 -minrate 271700 -maxrate 300300 -bt 14300 -bufsize 367500 -muxrate 300300 -vglobal 1 -f rtp rtp://$dstIP:$dstVideoPort2 -newvideo -vn -acodec libfaac -async 2 -flags +global_header -ac 1 -ar 44100 -ab 64000 -f rtp rtp://$dstIP:$dstAudioPort2 -newaudio -an -vcodec libx264 -coder 0 -threads 0 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -level 30 -g 25 -crf 25 -s 480x336 -aspect 16:9 -r 25 -b 386000 -vb 386000 -minrate 366700 -maxrate 405300 -bt 19300 -bufsize 472500 -muxrate 405300 -vglobal 1 -f rtp rtp://$dstIP:$dstVideoPort3 -newvideo -vn -acodec libfaac -async 2 -flags +global_header -ac 2 -ar 44100 -ab 64000 -f rtp rtp://$dstIP:$dstAudioPort3 -newaudio -an -vcodec libx264 -coder 0 -threads 0 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -level 30 -g 25 -crf 25 -s 480x336 -aspect 16:9 -r 25 -b 686000 -vb 686000 -minrate 651700 -maxrate 720300 -bt 34300 -bufsize 787500 -muxrate 720300 -vglobal 1 -f rtp rtp://$dstIP:$dstVideoPort4 -newvideo -vn -acodec libfaac -async 2 -flags +global_header -ac 2 -ar 44100 -ab 64000 -f rtp rtp://$dstIP:$dstAudioPort4 -newaudio ===== v4l2 loopback ===== v4l2 est un module permettant de créer des devices vidéos virtuels et d'y écrire avec des programmes (gstreamer, pix_record, ffmpeg) à l'instar d'une webcam * https://github.com/umlaeute/v4l2loopback * https://github.com/umlaeute/v4l2loopback/wiki ===== GoPro de m. ===== Récupérer le flux streamé de la gopro : il semblerait que le flux streamé soit en HLS (Apple ...) soit des bouts de fichiers de 2 secondes regroupés via un fichier playlist ==== ffmpeg ==== ffplay -i [[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]]\\ ffmpeg -y -i [[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]]  -c:v copy -an test.mp4 ffmpeg -y -i [[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]]  -f v4l2 /dev/video1 ffmpeg -re -lavfi testsrc -f v4l2 /dev/video1 Input #0, hls,applehttp, from 'http://10.5.5.9:8080/live/amba.m3u8':  Duration: 00:00:00.02, start: 1248.215467, bitrate: 131 kb/s    Stream #0:0: Video: h264 (High) (HDMV / 0x564D4448), yuvj420p, 432x240 [SAR 1:1 DAR 9:5], 25 fps, 25 tbr, 90k tbn, 50 tbc    Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 48000 Hz, stereo, s16, 131 kb/s Frame changed from size:0x0 to size:432x2405KB vq= 0KB sq= 0B f=0/0 [aac @ 0x9207980] Number of bands (14) exceeds limit (12).B f=0/0 f=0/0 [aac @ 0x9207980] channel element 2.1 is not allocated [mpegts @ 0x91fa7e0] PES packet size mismatch 3KB sq= 0B f=0/0 [aac @ 0x9207980] invalid band type0KB vq= 22KB sq= 0B f=0/0 [aac @ 0x9207980] channel element 3.9 is not allocated [mpegts @ 0x91fa7e0] PES packet size mismatch21KB sq= 0B f=0/0 ==== gstreamer ==== gst-launch-0.10 -v souphttpsrc location=[[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]]  is-live=true ! hlsdemux ! decodebin2 ! ffmpegcolorspace ! videoscale ! autovideosink * http://www.techanswerguy.com/2013/02/capturing-live-stream-from-gopro-hero-2.html * http://goprouser.freeforums.org/howto-livestream-to-pc-and-view-files-on-pc-smartphone-t9393.html * gstreamer http://forums.openpilot.org/topic/15587-video-gadget/#entry159688 et http://forums.openpilot.org/topic/15545-gcs-go-pro-wifi-widget/ (commandes via http) ==== VLC + Pd ==== ça semble marcher, éventuellement indiquer le backend [driver 4< avant de créer la fenetre GEM clearProps, setProps screen-fps 50, dimen 640 480, device [[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]] ===== Régie ===== ==== Structure ==== User : astroflux Nom ordi : RegieVideo SSD 256 Go : * / * swap 8Go Disque dur 1 To : * /home ==== Workflow ==== * Créer des devices virtuels sudo modprobe v4l2loopback video_nr=10,11,12,13,19 * Lancer le patch Pd qui appelle les différents flux avec pix_video et les renvoient sur les devices /dev/video10,11,12,13,19 via pix_record * **** {{:VIDEO-StreamingPdWowza.zip|VIDEO-StreamingPdWowza.zip}} * Lancer le patch Pd qui récupère le G+D de la console et le redispatch avec délais sur les sorties 2,3,4,5,6,7,8,9,10,11 de jack * Lancer les encodeurs pour envoyers les flux à wowza TEST ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video1 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 44100 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://127.0.0.1:10000?pkt_size=1316| udp://127.0.0.1:10000?pkt_size=1316]]\\         CONFIG LABO Chaque ligne se différencient de son /dev/video.. et de son numéro de port 1000**1** Cam 1:  ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video10 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10000?pkt_size=1316| udp://10.0.0.10:10000?pkt_size=1316]] Cam 2: ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video11 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10001?pkt_size=1316| udp://10.0.0.10:10001?pkt_size=1316]] Cam 3: ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video12 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10002?pkt_size=1316| udp://10.0.0.10:10002?pkt_size=1316]] Cam 4: ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video13 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10003?pkt_size=1316| udp://10.0.0.10:10003?pkt_size=1316]] Montage (en 19): ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video19 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10019?pkt_size=1316| udp://10.0.0.10:10019?pkt_size=1316]] Test avec H264 profile : ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video10 -vcodec libx264  -vb 150000 -g 60 -vprofile baseline -level 3 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts -pix_fmt yuv420p [[udp://192.168.0.10:10000?pkt_size=1316| udp://192.168.0.10:10000?pkt_size=1316]] Test avec H264 profile + enregistrement simultané (nécessite ffmpeg > 03/02/2013) :  ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video10 -vcodec libx264  -vb 150000 -g 60 -vprofile baseline -level 3 -acodec aac -ab 64000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts -pix_fmt yuv420p - | ffmpeg -f mpegts -i - -c copy -f mpegts [[udp://192.168.0.10:10000?pkt_size=1316| udp://192.168.0.10:10000?pkt_size=1316]]  -c copy -f mpegts record.ts * voir les options de profile (youtube live préconise "main", "baseline" est le plus compatible, notamment avec les vieux iOS) https://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide * et la compatibilité https://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide#Compatibility * les options x264 détaillées : https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping * les profils h264 détaillés : http://blog.mediacoderhq.com/h264-profiles-and-levels/ * Pour streamer et enregistrer en même temps avec ffmpeg https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs * Pour enregistrer le flux entrant et en même temps l'envoyer vers /dev/video2 /home/astroflux/Bureau/AstroFlux/armoire/bmdtools/bmdcapture -C 0 -m 2 -A 2 -V 4 -F nut -f pipe:1 | /home/astroflux/Bureau/AstroFlux/armoire/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f mp4 -vcodec mpeg4 -qscale 0 -vb 6000k -acodec libmp3lame -ab 320k Testrec.mp4 -f v4l2 /dev/video2 On met un | quand il s'agit d'un stream ffmpeg version 1.0ffmpeg version 1.0 Copyright (c) 2000-2012 the FFmpeg developers Copyright (c) 2000-2012 the FFmpeg developers built on Nov 17 2012 12:13:29 with gcc 4.7 (Debian 4.7.2-4) built on Nov 17 2012 12:13:29 with gcc 4.7 (Debian 4.7.2-4) configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --disable-decoder=libdirac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/i386-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libdc1394 --disable-altivec configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --disable-decoder=libdirac --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/i386-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libdc1394 --disable-altivec libavutil 51. 73.101 / 51. 73.101 libavutil 51. 73.101 / 51. 73.101 libavcodec 54. 59.100 / 54. 59.100 libavcodec 54. 59.100 / 54. 59.100 libavformat 54. 29.104 / 54. 29.104 libavformat 54. 29.104 / 54. 29.104 libavdevice 54. 2.101 / 54. 2.101 libavdevice 54. 2.101 / 54. 2.101 libavfilter 3. 17.100 / 3. 17.100 libavfilter 3. 17.100 / 3. 17.100 libswscale 2. 1.101 / 2. 1.101 libswscale 2. 1.101 / 2. 1.101 libswresample 0. 15.100 / 0. 15.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 libpostproc 52. 0.100 / 52. 0.100 [x264] Warning: Unrecognized parameter x264_i_weighted_pred [x264] Warning: Unrecognized parameter x264_b_fast_pskip [x264] Warning: Unrecognized parameter x264_b_dct_decimate Cannot lock down 82274202 byte memory area (Cannot allocate memory) [x264] Info: using SAR=1/1 [x264] Info: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX [x264] Info: profile Main, level 3.1 Cannot lock down 82274202 byte memory area (Cannot allocate memory) [jack @ 0x9514fa0] JACK client registered and activated (rate=48000Hz, buffer_size=1024 frames) [jack @ 0x9514fa0] Estimating duration from bitrate, this may be inaccurate Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, jack, from 'ffmpeg': Duration: N/A, start: 1377887869.965520, bitrate: 3072 kb/s Stream #0:0: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s [video4linux2,v4l2 @ 0x951d100] Cannot find a proper format for codec_id 0, pix_fmt -1. /dev/video10: Input/output error 7:1.0-dmo4 === Régie Puredata === Patch de contrôle de l'Alias8 (pad du haut rouge %%//%% pad du bas bleu) : {{media_02:alias8.pd|alias8.pd}} ===== Pour Debug ===== * Envoyer le flux vidéo live vers un de ces devices virtuels gst-launch videotestsrc ! v4l2sink device=/dev/video10 avec source live gst-launch v4l2src device=/dev/video1 ! 'video/x-raw-yuv,width=320,height=240' ! v4l2sink device=/dev/video10 ce device virtuel peut apparemment être attaqué par 2 programmes : vlc qui le stream directement > wowza et Pd qui l'ouvre avec pix_video gst-launch v4l2src device=/dev/video11 ! xvimagesink pour debug gst-launch -v --gst-debug-level=3 v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=352,height=288' ! v4l2sink device=/dev/video10 ==== Récupérer des infos sur les devices / caméras ==== sudo apt-get install v4l-utils uvcdynctrl guvcview v4l2ucp Tester la webcam lsusb Voir les périphériques ls /dev/vid* Infos v4l2 v4l-info /dev/video1 Les controles disponibles v4l2-ctl -d /dev/video1 -l Changer un parametre de controle v4l2-ctl -s pal -d /dev/video1 (pour passer en pal une carte d'acquisition) Les formats disponibles v4l2-ctl -d /dev/video1 --list-formats-ext Le format actuellement utilisé par la webcam v4l2-ctl -d /dev/video1 -V Changer la taille de capture de la webcam v4l2-ctl -d /dev/video1 --set-fmt-video=width=640,height=360 cat /sys/devices/virtual/video4linux/video10/buffers ou pour lister les formats d'une camera uvcdynctrl -d /dev/video1 -f voir tous les réglages avec une interface graphique guvcview changer les paramètres de la webcam quand Pure Data l'accapare v4l2ucp Pour gérer la bande passante des cameras et périphériques USB * http://renoirsrants.blogspot.com.au/2011/07/multiple-webcams-on-zoneminder.html ==== Blackmagic sous Linux ==== === installation === Tentative de faire marcher une blackmagick decklink quad sur linux (LMDE) * une bonne ressource http://wiki.teltek.es/display/Galicaster/Blackmagic+capture+cards * fichier txt de référence, à voir le problème de vmalloc du noyau 32 bits http://www.blackmagicdesign.com/media/5440492/Blackmagic_Desktop_Video_Linux_9.7.1.txt * http://www.aehunter.net/blog/ubuntu/blackmagic-design-media-express-2-3-and-ubuntu-10-10-a-solution/ **Il faut installer desktopvideo_10.4.2a18_amd64.debTexte en gras** pour avoir les drivers, paquet intégré au logiciel Blackmagic_Desktop_Video_Linux_10.4.2.tar.gz à télécharger là https://www.blackmagicdesign.com/support sudo dpkg -i desktopvideo_10.4.2a18_amd64.deb updater les firmwares si besoin : sudo BlackmagicFirmwareUpdater status \\ sudo BlackmagicFirmwareUpdater update /dev/blackmagic/dv0 sudo BlackmagicFirmwareUpdater update /dev/blackmagic/dv1 sudo BlackmagicFirmwareUpdater update /dev/blackmagic/dv2 sudo BlackmagicFirmwareUpdater update /dev/blackmagic/dv3 Check if the driver and the card are loaded and ready Run on a terminal: lspci | grep Blackmagic lsmod | grep blackmagic ls /dev/blackmagic* You will receive messages like: _02:00.0 Multimedia video controller: Blackmagic Design Device a11b_ _blackmagic                   2082944  1_ /dev/blackmagic0 === gstreamer === pour connaitre les propriétés de la carte decklink gst-inspect-0.10 decklinksrc pour connaitre les modules installés de gstreamer gst-inspect | grep sink gst-launch-0.10 videotestsrc ! ximagesink gst-launch-0.10 videotestsrc ! autovideosink gst-launch-0.10 videotestsrc ! aasink gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0 gst-launch-0.10 -v decklinksrc mode=2 connection=0 subdevice=0 ! ffmpegcolorspace ! ximagesink sync=false gst-launch-0.10 -v decklinksrc ! videoconvert ! ximagesink les sources du module decklink de gstreamer http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/decklink astroflux@regievideo ~ $ BlackmagicFirmwareUpdater status blackmagic0 [DeckLink SDI] 0x1d    OK réf: * bug negociating http://lists.freedesktop.org/archives/gstreamer-devel/2012-September/037296.html * liste bugs "officiels" https://bugzilla.gnome.org/buglist.cgi?quicksearch=gstreamer+decklink * des cli http://kenniscentrum.publiekeomroep.nl/pilot/WebM/wiki/WebmLive.html === bmdtools === des outils de capture et de diffusion en ligne de commande * https://github.com/lu-zero/bmdtools ./bmdcapture -h Pour compiler sur une ubuntu récente : https://github.com/lu-zero/bmdtools/issues/32 * soit utiliser cette version de bmdcapture https://github.com/lu-zero/bmdtools/tree/18371784a502e63807c816b12526ae066e86b254 * la placer dans le répertoire /home/simon/Téléchargements/Blackmagic DeckLink SDK 10.9/Linux/Samples/bmdtools-18371784a502e63807c816b12526ae066e86b254 make sudo cp bmdcapture /usr/bin/ Usage: bmdcapture -m [OPTIONS] -m : -> DeckLink SDI (-C 0 ) Supported video output display modes and pixel formats: 0: NTSC 720 x 486 29.97 FPS 1: NTSC 23.98 720 x 486 23.976 FPS 2: PAL 720 x 576 25 FPS 3: HD 1080p 23.98 1920 x 1080 23.976 FPS 4: HD 1080p 24 1920 x 1080 24 FPS 5: HD 1080p 25 1920 x 1080 25 FPS 6: HD 1080p 29.97 1920 x 1080 29.97 FPS 7: HD 1080p 30 1920 x 1080 30 FPS 8: HD 1080i 50 1920 x 1080 25 FPS 9: HD 1080i 59.94 1920 x 1080 29.97 FPS 10: HD 1080i 60 1920 x 1080 30 FPS 11: HD 720p 50 1280 x 720 50 FPS 12: HD 720p 59.94 1280 x 720 59.9401 FPS 13: HD 720p 60 1280 x 720 60 FPS -v Be verbose (report each 25 frames) -f Filename raw video will be written to -F Define the file format to be used -c Audio Channels (2, 8 or 16 - default is 2) -s Audio Sample Depth (16 or 32 - default is 16) -p PixelFormat Depth (8 or 10 - default is 8) -n Number of frames to capture (default is unlimited) -M Maximum queue size in GB (default is 1 GB) -C number of card to be used -S data input serial -A Audio input: 1: Analog (RCA or XLR) 2: Embedded Audio (HDMI/SDI) 3: Digital Audio (AES/EBU) -V Video input: 1: Composite 2: Component 3: HDMI 4: SDI 5: Optical SDI 6: S-Video Capture video and audio to a file. Raw video and audio can be sent to a pipe to avconv or vlc e.g.: bmdcapture -m 2 -A 1 -V 1 -F nut -f pipe:1 compil de bmdcapture : modif du code à faire ! * * la solution http://forum.blackmagicdesign.com/viewtopic.php?f=12&t=9898 * autre solution pas testée : https://github.com/lu-zero/bmdtools/issues/17 ./bmdcapture -C 0 -m 5 -A 2 -V 4 -F raw -f output_file.raw === bmdcapture | ffmpeg === ./bmdcapture -C 0 -m 8 -A 2 -V 4 -F nut -f pipe:1 | ffmpeg -re -i - -vcodec mpeg2video -b 6500k -acodec mp2 -ab 224k -f vob test.mpg ./bmdcapture -C 0 -c 8 -A 2 -V 3 -m 14 -F nut -f pipe:1 | ffmpeg -threads 6 -y -i - -f matroska -vcodec libx264 -preset ultrafast -qp 18 -acodec ac3 -ab 384k -ac 6 -y blackmagic.mkv ./bmdcapture -m 2 -C 0 -A 2 -V 4 -F nut -f pipe:1 |ffmpeg -re -i - -copyts -r 25 -aspect 16:9 -copyts -vcodec libx264  -vprofile main -preset medium -crf 17  -s 640x360 -b:a 196k -ar 44100 -b:v 1100k -maxrate 1300k -bufsize 1500k -pix_fmt yuv420p  -y /tmp/testfile.mp4 ./bmdcapture -C 0 -m 8 -A 2 -V 4 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f v4l2 /dev/video10 ./bmdcapture -C 1 -m 8 -A 2 -V 4 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f v4l2 /dev/video11 Possibilité de réduire la taille d'acquisition à la volée  ./bmdcapture -C 1 -m 8 -A 2 -V 4 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -s 640x480 -f v4l2 /dev/video11 ./bmdcapture -C 0 -m 2 -V 1 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f v4l2 /dev/video10 ... Failed to set video input - result 80000001 pipe:: Invalid data found when processing input ==== Pd vlc gopro ==== Ligne pour [pix_video] + GoPro: clearProps, setProps screen-fps 50, dimen 640 480, device [[http://10.5.5.9:8080/live/amba.m3u8| http://10.5.5.9:8080/live/amba.m3u8]] ==== Android Stream ==== * Pd de format de couleur pour android : http://stackoverflow.com/questions/5534032/display-yuv420p-on-android et http://developer.android.com/reference/android/graphics/Bitmap.Config.html ==== Minicaster Stream ==== * Minicaster : http://minicaster.com/how-tos-support/httpwww-minicaster-compoint-to-point-signal-contribution/ configuration via l'ip de la minicaster dans le navigateur root ****** ffmpeg -i [[udp://10.0.0.174:10000| udp://10.0.0.174:10000]]  -f v4l2 /dev/video69 10.0.0.174 étant l'ip locale de l'ordinateur qui reçoit le flux\\ ouverture du périphérique v4l2loopback dans Pd {{media_09:minicasterconfig.png?990|fig:minicasterconfig.png}} ===== Ligne droite ===== Installer ffmpeg, v4l2loopback, Jack : sudo apt-get install ffmpeg v4l2loopback-utils jackd xterm Installer [[http://sourceforge.net/projects/pure-data/files/pd-extended/0.43.4/|Pd-extended]] (wheezy i386) + [[http://wiki.labomedia.org/index.php/Installation_et_configuration_de_Pure_Data_sur_Linux#GEM_binaire|GEM avec backend VLC]] + {{:TestMosaic.zip|TestMosaic.zip}} + Readanysf sudo apt-get install pd-readanysf L'ajouter dans le path //Edition > Préférences > New...// (attention il se trouve dans **pd/extra** et non dans pd-extended/extra) /usr/lib/pd/extra/readanysf~ Dans l'interface graphique de Jack : //Réglages... > Options > Activer la persistance de la baie de brassage// et aller chercher //Brassage-AstroFlux.xml// dans le dossier AstroFlux. Surface de contrôle : [[Pure Data vs Alias8]] Pour tester: ==== Mode manuel ==== * Créer les prériphériques vidéos virtuels (choisis ici arbitrairement: 10-13 pour les 4 flux originaux, 19 pour le montage) : * Lancer Jack * Lancer les deux patch Pd (vidéo/audio) sur deux instances différentes : pd-extended audiodelaymix.pd & pd-extended TestMosaic.pd * Lancer les différentes lignes ffmpeg : Chaque ligne se différencient de son /dev/video.. et de son numéro de port 1000**1** **Cam 0:**  ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video10 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10000?pkt_size=1316| udp://10.0.0.10:10000?pkt_size=1316]] **Cam 1:** ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video11 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10001?pkt_size=1316| udp://10.0.0.10:10001?pkt_size=1316]] **Cam 2:** ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video12 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10002?pkt_size=1316| udp://10.0.0.10:10002?pkt_size=1316]] **Cam 3:** ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video13 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10003?pkt_size=1316| udp://10.0.0.10:10003?pkt_size=1316]] **Montage (en 19):** ffmpeg -f jack -i ffmpeg -y -f v4l2 -s 640x480 -i /dev/video19 -vcodec libx264  -vb 150000 -g 60 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -strict experimental -f mpegts [[udp://10.0.0.10:10019?pkt_size=1316| udp://10.0.0.10:10019?pkt_size=1316]] ==== Mode lanceur ==== Pour que la création des périphériques virtuels soit permanente il faut ajouter cette ligne à **/etc/modules** : v4l2loopback video_nr=2,3,10,11,12,13,19 Script bash à créer pour tout lancer automatiquement (chemin du //cd// à adapter au besoin) v4l2-ctl -d pal /dev/video0 v4l2-ctl -d pal /dev/video1 ./bmdcapture -C 0 -m 2 -V 1 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f v4l2 /dev/video2 & ./bmdcapture -C 1 -m 2 -V 1 -F nut -f pipe:1 | /home/astroflux/Bureau/ffmpeg.static.64bit.2013-06-01/ffmpeg -y -i - -f v4l2 /dev/video3 & #qjackctl & #sleep 5 cd /home/astroflux/Bureau/AF #pd-extended -jack testSon.pd & sleep 5 pd-extended -noaudio -alsamidi 00-AstroFlux-Interface.pd Autoriser l'exécution du fichier comme un programme (bt droit > propriétés > permissions). Puis double-clic dessus et "Lancer dans un terminal". Pour tout fermer : ctrl+c dans la console où doivent défiler les lignes ffmpeg. ===== Régie icecast ===== sudo apt-get install oggfwd ffmpeg -f jack -i ffmpeg -f v4l2 -i  /dev/video11 -s 640x480 -r 25 -aq 2 -ac 2 -ar 44100  -acodec libvorbis -f ogg - | oggfwd labomedia.org 8000 hackme /b01stream.ogg Variable Bitrate (VBR) Exemple ffmpeg -i input.mkv -codec:v libtheora -qscale:v 7 -codec:a libvorbis -qscale:a 5 output.ogv -qscale:v – video quality. Range is 0–10, where 10 is highest quality. 5–7 is a good range to try. If you omit -qscale:v (or the alias -q:v) then ffmpeg will use the default -b:v 200k which will most likely provide a poor quality output.   -qscale:a – audio quality. Range is 0–10, where 10 is highest quality. 3–6 is a good range to try. Default is -qscale:a 3.  Lien vers Ruru {{:roploplo.jpg|roploplo.jpg roploplo.jpg}} ===== Nouvelle installation sur une Ubuntu 14.04 ===== sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ffmpeg jackd xterm vlc nautilus-open-terminal gnome-session-fallback puredata pd-readanysf gem pd-ggee pd-cyclone pd-maxlib Ajouter gem, ggee, cyclone et readanysf~ dans les "path" de Puredata (le chemin est /usr/lib/pd/extra). Ajouter "Gem" dans le "startup" de Puredata ===== Nouvelle installation sur une Debian Jessie ===== Pour ffmpeg, ajouter les dépots : deb [[http://www.deb-multimedia.org| http://www.deb-multimedia.org]]  jessie main sudo apt-get update sudo apt-get install ffmpeg jackd xterm vlc nautilus-open-terminal puredata pd-readanysf gem pd-ggee pd-cyclone pd-maxlib build-essential git curl Ajouter gem, ggee, cyclone et readanysf~ dans les "path" de Puredata (le chemin est /usr/lib/pd/extra). Ajouter "Gem" dans le "startup" de Puredata Dans Jack, ajouter AstroFlululu.xml comme "Brassage" puis l'activer. Dans Réglages > Divers > Démarrer le serveur Jack au démarrage. ==== Compilation v4l2loopback pour avoir 10 devices ==== git clone [[https://github.com/umlaeute/v4l2loopback.git| https://github.com/umlaeute/v4l2loopback.git]] cd v4l2loopback make KCPPFLAGS="-DMAX_DEVICES=10" make install Pour que la création des périphériques virtuels soit permanente il faut ajouter cette ligne à /etc/rc.local (effectif après un redémarrage) : sudo modprobe v4l2loopback video_nr=2,3,4,10,11,12,13,14,20 ==== Compilation bmdcapture ==== Voir [[http://wiki.labomedia.org/index.php/AstroFluxTechnique#installation|ici]] {{tag>bj streaming vidéo}}