gstreamer

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gstreamer [2010/06/18 21:52] brotgstreamer [2012/02/18 13:29] (current) – old revision restored brot
Line 21: Line 21:
 ===== Beispiele ===== ===== Beispiele =====
  
 +=== Praktische Decodebins! ===
  
-==== Umwandeln von nem haufen PNG-Bildern und ner FLAC-Tonspur in ein WebM Video ====+  gst-launch-0.10 filesrc location="Downloads/tues_11_16.flv" ! decodebin name=dec  dec. ! ffdec_flv ! videoscale method=2 ! video/x-raw-yuv,width=853,height=480 ! vp8enc threads=2 mode=vbr ! webmmux name="mux" ! filesink location=honcast.webm  dec. ! audioconvert ! vorbisenc quality=0.2 ! queue ! mux.audio_0 
 + 
 + 
 +=== DVD -> WebM  === 
 + 
 +  gst-launch-0.10 dvdreadsrc title=1 ! dvddemux name=demux  demux.current_video ! queue ! mpeg2dec ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! queue ! webmmux name="mux" ! filesink location=oceans11.ivf  demux.current_audio ! queue ! a52dec mode=2 ! vorbisenc quality=0.4 ! queue ! mux.audio_0 
 +   
 +Speichert den ersten Titel einer DVD im WebM Format ab - also VP8 als Videocodec und Vorbis als Audiocodec. VP8 ist der derzeit beste freie Videocodec, und auch der einzige freie Videocodec der mit h264 in einer Liga spielt. GStreamer unterstützt den Codec und den WebM Container seit dem 31.05.2010 ( gst-plugins-good 0.10.23, gst-plugins-ugly 0.10.15, gst-plugins-bad 0.10.19 ), noch werden nicht alle Optionen des VP8-Videocodecs über GStreamer angeboten. Die Optionen für VP8 sind [[http://www.webmproject.org/tools/encoder-parameters/|auf der Website des WebM-Projekts]] erklärt, die von GStreamer anpassbaren findet man über gst-inspect vp8enc 
 + 
 +=== DVD -> MKV (high-quality x264 + vorbis) === 
 + 
 +  gst-launch-0.10 dvdreadsrc title=1 ! dvddemux name=demux  demux.current_video ! queue ! mpeg2dec ! x264enc quantizer=25 threads=2 pass=qual me=2 subme=6 ref=6 b-pyramid=true weightb=true ! queue ! matroskamux name="mux" ! filesink location=oceans11.mkv  demux.current_audio ! queue ! a52dec mode=2 ! vorbisenc quality=0.4 ! queue ! mux.audio_0 
 + 
 +Speichert den ersten Titel einer DVD als h264 Video und Vorbis Audio in einem MKV. Der x264-encoder hat recht viele Features an, das .mkv wird also nicht auf schwachen Systemen abspielbar sein, dafür braucht die gewünschte Qualität ( wird über die "quantizer" funktion angepasst ) sehr wenig Platz. Die ganzen Optionen sind [[http://trac.handbrake.fr/wiki/x264Options|im Handbrake wiki]] schön erklärt. 
 + 
 + 
 +=== PNGs+FLAC -> WebM ===
  
  
     gst-launch-0.10 webmmux name="mux" ! filesink location=test.ivf . multifilesrc location="/home/brot/sintel_trailer-720/sintel_trailer_2k_%04d.png" index="1" caps="image/png,framerate=24/1" ! pngdec ! ffmpegcolorspace ! video/x-raw-yuv,format=\(fourcc\)I420 ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! multiqueue ! mux. filesrc location="/home/brot/sintel_trailer-720/sintel_trailer-audio.flac" ! flacdec ! audioconvert ! vorbisenc quality=0.25 ! mux.     gst-launch-0.10 webmmux name="mux" ! filesink location=test.ivf . multifilesrc location="/home/brot/sintel_trailer-720/sintel_trailer_2k_%04d.png" index="1" caps="image/png,framerate=24/1" ! pngdec ! ffmpegcolorspace ! video/x-raw-yuv,format=\(fourcc\)I420 ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! multiqueue ! mux. filesrc location="/home/brot/sintel_trailer-720/sintel_trailer-audio.flac" ! flacdec ! audioconvert ! vorbisenc quality=0.25 ! mux.
          
-Anmerkung: der "." trennt mehrere Pipelines auf. Am Anfang wird der filesink definiert, mit dem namen "mux". Danach kommt die Video- und die Ton-Pipeline, die beide mit "mux." aufhörenwas den Stream durch den webmmuxer in den filesink leitet. +Um Videocodecs zu testen kommen teilweise PNG's zum einsatzum sich nicht Arteafakte vorheriger Videocodecs einzufangen.
-==== Umwandeln von einem y4m Video in WebM ====+
  
-  gst-launch-0.10 webmmux name="mux" ! filesink location=test.ivf . filesrc location="sunflower.y4m! ffdemux_yuv4mpegpipe ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! multiqueue ! mux.+Anmerkung: Am Anfang wird der filesink definiert, mit dem namen "mux"Danach kommt die Video- und die Ton-Pipeline, die beide mit "mux." aufhören, was den Stream durch den webmmuxer in den filesink leitet.
  
 +=== y4m -> WebM ===
  
 +  gst-launch-0.10 webmmux name="mux" ! filesink location=test.ivf . filesrc location="sunflower.y4m" ! ffdemux_yuv4mpegpipe ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! multiqueue ! mux.
  
 +Manchmal kommen zum testen auch y4m Videos zum Einsatz, was im Endeffekt die YCbCr Einzelbilder in einem mpeg-Container sind
 ===== Ablage ;) ===== ===== Ablage ;) =====
  
 +=== abspielen der ip-webcam (android webcam dingen) ===
  
-   gst-launch-0.10 filesrc location=/home/brot/fu.mkv ! matroskademux ! dtsdec audiorate ! audioconvert ! audio/x-raw-int,channels=6 ! flacenc ! filesink location=out.flac +   gst-launch-0.10 -v souphttpsrc location="http://10.10.14.113:8080/videofeed" do-timestamp=true ! multipartdemux ! image/jpeg, width=640,height=480, framerate=15/1 ! jpegdec ! ffmpegcolorspace ! ximagesink 
-   + 
 +=== mkv -> shoutcast+local === 
 +   gst-launch-0.10 --eos-on-shutdown filesrc location=/media/input.mkv ! queue ! matroskademux name="input" input. queue decodebin ! ffvideoscale method=2 ! video/x-raw-yuv, width=640, height=360 ! tee name=vdec ! queue ! theoraenc bitrate=451 ! queue ! oggmux name="mux" mux. ! queue max-size-bytes=100000 max-size-time=1 ! shout2send ip=minad.de port=8000 password=minadrulez mount=/brot.ogg streamname='brot' input. ! queue ! decodebin ! tee name=adec ! audioconvert ! vorbisenc ! queue ! mux. vdec. ! queue ! xvimagesink adec. ! queue ! pulsesink 
 + 
 +=== webcam -> shoutcast === 
 +  time gst-launch-0.10 --eos-on-shutdown v4l2src ! 'video/x-raw-yuvformat=(fourcc)YUY2, width=640, height=480, framerate=15/1' ! queue max-size-bytes=100000000 max-size-time=0 ! ffmpegcolorspace ! theoraenc bitrate=300 ! oggmux ! tee name=ogged ! queue max-size-bytes=100000000 max-size-time=0 ! oggdemux ! theoradec ! xvimagesink sync=false force-aspect-ratio=true ogged. ! queue max-size-bytes=100000000 max-size-time=0 ! filesink location=`date +%F_%T`.ogv ogged. ! queue max-size-bytes=100000000 max-size-time=0 ! shout2send ip=media.basilgohar.com port=8000 password=**** mount=/basil-at-work.ogv streamname='Basil at Work' description='Live video stream of me at work' genre='Webcam' url='http://media.basilgohar.com/stream/' ogged. 
 + 
 + 
 +=== DVD's Abspielen === 
 +  gst-launch-0.10 dvdreadsrc title=1 ! dvddemux name=demux demux.current_audio ! queue ! a52dec ! audioconvert ! pulsesink demux. ! mpeg2dec ! xvimagesink 
 +   
 +=== DVDs umwandeln und eine falsche 4:3 aspect ratio korrigieren === 
 + 
 +  gst-launch-0.10 dvdreadsrc device=/home/nudelundbrot/einsteins_2010_.iso title=1 ! dvddemux name=demux  demux.current_video ! queue ! mpeg2dec! postproc_cubicipoldeint ! ffvideoscale method=2 ! video/x-raw-yuv, width=512, height=288 ! theoraenc quality=25 drop-frames=false ! queue ! oggmux name="mux" ! filesink location=einsteins2010.ogg  demux.current_audio ! queue ! a52dec mode=2 ! vorbisenc quality=0.2 ! queue ! mux.sink_1 
 + 
 +  gst-launch-0.10 dvdreadsrc device=/home/nudelundbrot/einsteins_2010_.iso title=1 ! dvddemux name=demux  demux.current_video ! queue ! mpeg2dec ! deinterlace ! ffvideoscale method=2 ! video/x-raw-yuv, width=1024, height=576 ! vp8enc threads=2 quality=6 speed=0 max-latency=25 mode=vbr queue ! webmmux name="mux" ! filesink location=einsteins2010.webm  demux.current_audio ! queue ! a52dec mode=2 ! vorbisenc quality=0.4 ! queue ! mux.audio_0 
 + 
 +=== Sonstiges ===
  
    gst-launch-0.10 multifilesrc location=big_buck_bunny_%05d.png index=1 caps=”image/png,framerate=24/1″ ! pngdec ! ffmpegcolorspace ! jpegenc quality=100 ! queue ! mux. filesrc location=../BigBuckBunny-stereo.flac ! flacdec ! audioconvert ! audioresample ! queue ! mux. avimux name=mux ! filesink location=input226_mjpeg.avi    gst-launch-0.10 multifilesrc location=big_buck_bunny_%05d.png index=1 caps=”image/png,framerate=24/1″ ! pngdec ! ffmpegcolorspace ! jpegenc quality=100 ! queue ! mux. filesrc location=../BigBuckBunny-stereo.flac ! flacdec ! audioconvert ! audioresample ! queue ! mux. avimux name=mux ! filesink location=input226_mjpeg.avi
-   + 
 +   gst-launch-0.10 v4l2src device=/dev/video0 ! tee name=videoout ! queue ! video/x-raw-yuv,width=640,height=480 ! queue  ! theoraenc quality=30 ! muxout. osssrc device=/dev/dsp ! tee name=audioout ! queue ! audio/x-raw-int,rate=44000 ! queue ! audioconvert ! vorbisenc !  muxout. oggmux name=muxout ! filesink location=media2.ogg videoout. ! queue ! ffmpegcolorspace ! xvimagesink audioout. ! queue ! osssink 
 http://diracvideo.org/wiki/index.php/Encode_Big_Buck_Bunny http://diracvideo.org/wiki/index.php/Encode_Big_Buck_Bunny
 +
 +   gst-launch-0.10 v4l2src device="/dev/video1" ! image/jpeg,width=640,height=480,framerate=30/1 ! jpegdec ! queue max-size-time="500000" name=input1 v4l2src device="/dev/video0" ! image/jpeg,width=640,height=480,framerate=30/1 ! jpegdec ! queue name=input2 max-size-time="500000" ximagesrc use-damage=false ! ffvideoscale ! video/x-raw-yuv,width=1280 ! queue name=input3 max-size-time="500000" input1. ! videomixer2 name=mix sink_0::xpos=0 sink_1::xpos=640 ! queue name=asd1 max-size-time="500000" input2. ! mix. input3. ! ffmpegcolorspace ! finalmix.  asd1. ! videomixer2 name=finalmix sink_0::ypos=480 sink_1::xpos=0 ! queue max-size-time="500000" ! ffmpegcolorspace ! videorate ! video/x-raw-yuv,framerate=30/1 ! x264enc speed-preset="superfast" bitrate=4000 profile=3 tune="zerolatency" ! gdppay ! queue max-size-time="500000" ! tcpserversink host="10.10.1.58"
 +   
 +   gst-launch-0.10 v4l2src device="/dev/video1" ! image/jpeg,width=640,height=480,framerate=15/1 ! jpegdec ! videobox right=-640 ! queue max-size-time="500000" name=webcam1 v4l2src device="/dev/video2" ! image/jpeg,width=640,height=480,framerate=15/1 ! jpegdec ! queue name=webcam2 max-size-time="500000" ximagesrc use-damage=false ! ffvideoscale ! video/x-raw-yuv,width=1280 ! queue name=desktop max-size-time="500000" webcam1. ! videomixer name=webcammix sink_0::xpos=0 sink_1::xpos=640 ! queue name=webcams max-size-time="500000" webcam2. ! webcammix.  webcams. ! videobox bottom=-800 border-alpha=0 fill=white ! videomixer name=finalmix sink_1::ypos=800 sink_0::xpos=0  ! queue max-size-time="500000" ! ffmpegcolorspace ! videorate ! video/x-raw-yuv,framerate=15/1 ! x264enc speed-preset="superfast" bitrate=2000 profile=3 tune="zerolatency" ! gdppay ! queue max-size-time="500000" ! tcpserversink host="0.0.0.0" desktop. ! ffmpegcolorspace ! finalmix. pulsesrc device="alsa_input.usb-046d_0821_F4E863A0-00-U0x46d0x821.analog-stereo" provide-clock=false ! audioconvert ! vorbisenc ! gdppay ! queue max-size-time="500000" ! tcpserversink host="0.0.0.0" port=4954
  
  • gstreamer.1276897977.txt.gz
  • Last modified: 2010/06/18 21:52
  • by brot