GStreamer: Difference between revisions
(add description) |
|||
Line 1: | Line 1: | ||
GStreamer is a multimedia processing library which front end applications can leverage in order to provide a wide variety of functions such as audio and video playback, streaming, non-linear video editing and V4L2 capture support. |
|||
==Introduction== |
|||
⚫ | |||
==Documentation== |
==Documentation== |
||
Line 24: | Line 22: | ||
framerate=10, format=(fourcc)I420" ! xvimagesink |
framerate=10, format=(fourcc)I420" ! xvimagesink |
||
==TV capture commands== |
==V4L TV capture commands== |
||
⚫ | |||
===Record to ogg theora=== |
===Record to ogg theora=== |
||
Line 78: | Line 77: | ||
For details, see gst-launch and google; the plugins in particular are poorly documented so far. |
For details, see gst-launch and google; the plugins in particular are poorly documented so far. |
||
==External Link== |
|||
* [http://gstreamer.freedesktop.org/ GStreamer project page] |
|||
* [http://en.wikipedia.org/wiki/GStreamer GStreamer Wikipedia page] |
Revision as of 00:29, 5 December 2008
GStreamer is a multimedia processing library which front end applications can leverage in order to provide a wide variety of functions such as audio and video playback, streaming, non-linear video editing and V4L2 capture support.
Documentation
- Gstreamer project
- FAQ
- Documentation
- man gst-launch
Webcam commands
gst-launch-0.10 v4l2src use-fixed-fps=false ! video/x-raw-yuv,format=\(fourcc\)UYVY,width=320,height=240 \ ! ffmpegcolorspace ! ximagesink
gst-launch-0.10 v4lsrc autoprobe-fps=false device=/dev/video0 ! "video/x-raw-yuv, width=160, height=120, \ framerate=10, format=(fourcc)I420" ! xvimagesink
V4L TV capture commands
The gstreamer0.10-plugins-bad package in Debian added Video4Linux2 capture support (cf. bug #379867).
Record to ogg theora
gst-launch-0.10 oggmux name=mux ! filesink location=test0.ogg v4l2src device=/dev/video2 ! \ video/x-raw-yuv,width=640,height=480,framerate=\(fraction\)30000/1001 ! ffmpegcolorspace ! \ theoraenc ! queue ! mux. alsasrc device=hw:2,0 ! audio/x-raw-int,channels=2,rate=32000,depth=16 ! \ audioconvert ! vorbisenc ! mux.
The files will play in mplayer, using the codec Theora. Note the required workaround to get sound on a saa7134 card, which is set at 32000Hz (cf. bug). However, I was still unable to get sound output, though mplayer claimed there was sound -- the video is good quality:
VIDEO: [theo] 640x480 24bpp 29.970 fps 0.0 kbps ( 0.0 kbyte/s) Selected video codec: [theora] vfm: theora (Theora (free, reworked VP3)) AUDIO: 32000 Hz, 2 ch, s16le, 112.0 kbit/10.94% (ratio: 14000->128000) Selected audio codec: [ffvorbis] afm: ffmpeg (FFmpeg Vorbis decoder)
Record to mpeg4
Or mpeg4 with an avi container (Debian has disabled ffmpeg encoders, so install Marillat's package or use example above):
gst-launch-0.10 avimux name=mux ! filesink location=test0.avi v4l2src device=/dev/video2 ! \ video/x-raw-yuv,width=640,height=480,framerate=\(fraction\)30000/1001 ! ffmpegcolorspace ! \ ffenc_mpeg4 ! queue ! mux. alsasrc device=hw:2,0 ! audio/x-raw-int,channels=2,rate=32000,depth=16 ! \ audioconvert ! lame ! mux.
I get a file out of this that plays in mplayer, with blocky video and no sound. Avidemux cannot open the file.
Record to raw video
If you don't care for sound, this simple version works for uncompressed video:
gst-launch-0.10 v4l2src device=/dev/video5 ! video/x-raw-yuv,width=640,height=480 ! avimux ! \ filesink location=test0.avi
tcprobe says this video-only file uses the I420 codec and gives the framerate as correct NTSC:
$ tcprobe -i test1.avi [tcprobe] RIFF data, AVI video [avilib] V: 29.970 fps, codec=I420, frames=315, width=640, height=480 [tcprobe] summary for test1.avi, (*) = not default, 0 = not detected import frame size: -g 640x480 [720x576] (*) frame rate: -f 29.970 [25.000] frc=4 (*) no audio track: use "null" import module for audio length: 315 frames, frame_time=33 msec, duration=0:00:10.510
The files will play in mplayer, using the codec [raw] RAW Uncompressed Video.
Converting formats
To convert the files to matlab (didn't work for me):
mencoder test0.avi -ovc raw -vf format=bgr24 -o test0m.avi -ffourcc none
For details, see gst-launch and google; the plugins in particular are poorly documented so far.