video 4 linux 2 notes
Contents
V4L2 -- Video For Linux Version Two
UVC
For a list of cameras that support UVC see the official Linux UVC site. Full UVC support in Linux:
I have been using a Logitech HD Pro Webcam C910, USB Device ID: 046d:0821, for my tests.
Gstreamer
Gstreamer is fast replacing all my other command-line tools for handling video.
1920x1080: This will have a low frame-rate since it will essentially max-out the USB bandwidth. It's useful for capturing individual frames without compression.
gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1920,height=1080' ! xvimagesink
This will capture at a higher framerate, but it will undersample the pixels so you will get an effective 320x240 resolution.
gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480,framerate=60/1' ! xvimagesink
gstreamer fbdevsink "ERROR: Pipeline doesn't want to pause."
If you are trying to use the framebuffer device for video playback then you may get an error like the one below. This is a permissions problem. Try adding sudo in front of the pipeline, or run the command as root.
$ gst-launch videotestsrc ! ffmpegcolorspace ! fbdevsink Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. Setting pipeline to NULL ... Freeing pipeline ...
Capture video and modify settings at the same time
Start `guvcview` with the --control_only option to display a GUI dialog to edit camera settings. This will work while another video display or capture application is already running.
guvcview --control_only --device=/dev/video0
fswebcam
`fswebcam` is a small and simple tool for grabbing still images from a camera. The world needs more apps like this. It can grab a single image or grab sequences of images in a loop. It can save images to a file or pipe them to stdout.
fswebcam --png --save fswebcam-test.png