Arto's Notes re: V4L2

Listing Devices

$ lsmod | fgrep uvcvideo

$ ls -l /dev/video*
crw-rw---- 1 root video 81, 0 Jan  1 00:00 /dev/video0

$ lsusb
$ lsusb -d 041e:4097 -t
$ sudo lsusb -d 041e:4097 -v

$ sudo v4l2-ctl --list-devices
$ sudo v4l2-ctl --info

$ uvcdynctrl --list

Introspecting Devices

$ sudo aptitude install v4l-utils
$ dpkg -L v4l-utils

$ sudo v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUV 4:2:2 (YUYV)

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : MJPEG

Recording Video

# http://packages.ubuntu.com/trusty/streamer
$ sudo aptitude install streamer

# http://packages.ubuntu.com/trusty/libav-tools
$ sudo aptitude install ffmpeg libav-tools

# http://packages.ubuntu.com/trusty/mencoder
$ sudo aptitude install mencoder

Recording with Streamer

$ streamer -c /dev/video0 -f jpeg -t 0:10 -o video.avi

Capturing Frames

Capturing with Streamer

$ streamer -o frame.jpeg
$ streamer -c /dev/video0 -f jpeg -o frame.jpeg

Loopback Device

$ sudo aptitude install v4l2loopback-utils

$ man 1 v4l2loopback-ctl

$ sudo modprobe v4l2loopback
$ sudo modprobe -r v4l2loopback
$ ls -l /dev/video0
$ ls -l /sys/devices/virtual/video4linux/video0/

$ sudo ffmpeg -re -i input.avi -f v4l2 /dev/video0
$ sudo gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video0
$ sudo gst-launch-0.10 -v videotestsrc pattern=snow ! "video/x-raw-yuv,width=640,height=480,framerate=15/1,format=(fourcc)YUY2" ! v4l2sink device=/dev/video0

$ sudo aptitude install libv4l-dev # for <libv4l2.h>
$ sudo pip2 install v4l2capture