1. installation
![]() |
elvis left the building |
source /bin/cid-functions
cid_add_line /boot/config.txt "start_x=1"
cid_add_line /boot/config.txt "gpu_mem=128"
vi /etc/modules-load.d/camera.conf
bcm2835-v4l2
modprobe -v bcm2835-v4l2
yum install v4l-utils
reboot
2. xtra reading
The commands for the camera module are included as part of the raspberrypi-firmware package - which is installed by default.
-------------------------------------------------------------------------------
The V4L2 driver by default only allows video recording up to 1280x720, else it glues together consecutive still screens resulting in videos of 4 fps or lower.
Adding the following options removes this limitation:
/etc/modprobe.d/rpi-camera.conf
options bcm2835-v4l2 max_video_width=3240 max_video_height=2464
3. testing
rpm -q --quiet "xawtv" || yum -y install xawtv
v4l-info
### v4l2 device info [/dev/video0] ###
general info
VIDIOC_QUERYCAP
driver : "bm2835 mmal"
card : "mmal service 16.1"
bus_info : "platform:bcm2835-v4l2"
version : 4.9.30
capabilities : 0x85200005 [VIDEO_CAPTURE,VIDEO_OVERLAY,?,READWRITE,STREAMING,(null)]
standards
inputs
VIDIOC_ENUMINPUT(0)
index : 0
name : "Camera 0"
type : CAMERA
audioset : 0
tuner : 0
std : 0x0 []
status : 0x0 []
video capture
VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
index : 0
type : VIDEO_CAPTURE
flags : 0
description : "Planar YUV 4:2:0"
pixelformat : 0x32315559 [YU12]
VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
index : 1
type : VIDEO_CAPTURE
flags : 0
description : "YUYV 4:2:2"
pixelformat : 0x56595559 [YUYV]
VIDIOC_ENUM_FMT(2,VIDEO_CAPTURE)
index : 2
type : VIDEO_CAPTURE
flags : 0
description : "24-bit RGB 8-8-8"
pixelformat : 0x33424752 [RGB3]
VIDIOC_ENUM_FMT(3,VIDEO_CAPTURE)
index : 3
type : VIDEO_CAPTURE
flags : 1
description : "JFIF JPEG"
pixelformat : 0x4745504a [JPEG]
VIDIOC_ENUM_FMT(4,VIDEO_CAPTURE)
index : 4
type : VIDEO_CAPTURE
flags : 1
description : "H.264"
pixelformat : 0x34363248 [H264]
VIDIOC_ENUM_FMT(5,VIDEO_CAPTURE)
index : 5
type : VIDEO_CAPTURE
flags : 1
description : "Motion-JPEG"
pixelformat : 0x47504a4d [MJPG]
VIDIOC_ENUM_FMT(6,VIDEO_CAPTURE)
index : 6
type : VIDEO_CAPTURE
flags : 0
description : "YVYU 4:2:2"
pixelformat : 0x55595659 [YVYU]
VIDIOC_ENUM_FMT(7,VIDEO_CAPTURE)
index : 7
type : VIDEO_CAPTURE
flags : 0
description : "VYUY 4:2:2"
pixelformat : 0x59555956 [VYUY]
VIDIOC_ENUM_FMT(8,VIDEO_CAPTURE)
index : 8
type : VIDEO_CAPTURE
flags : 0
description : "UYVY 4:2:2"
pixelformat : 0x59565955 [UYVY]
VIDIOC_ENUM_FMT(9,VIDEO_CAPTURE)
index : 9
type : VIDEO_CAPTURE
flags : 0
description : "Y/CbCr 4:2:0"
pixelformat : 0x3231564e [NV12]
VIDIOC_ENUM_FMT(10,VIDEO_CAPTURE)
index : 10
type : VIDEO_CAPTURE
flags : 0
description : "24-bit BGR 8-8-8"
pixelformat : 0x33524742 [BGR3]
VIDIOC_ENUM_FMT(11,VIDEO_CAPTURE)
index : 11
type : VIDEO_CAPTURE
flags : 0
description : "Planar YVU 4:2:0"
pixelformat : 0x32315659 [YV12]
VIDIOC_ENUM_FMT(12,VIDEO_CAPTURE)
index : 12
type : VIDEO_CAPTURE
flags : 0
description : "Y/CrCb 4:2:0"
pixelformat : 0x3132564e [NV21]
VIDIOC_ENUM_FMT(13,VIDEO_CAPTURE)
index : 13
type : VIDEO_CAPTURE
flags : 0
description : "32-bit BGRA/X 8-8-8-8"
pixelformat : 0x34524742 [BGR4]
VIDIOC_G_FMT(VIDEO_CAPTURE)
type : VIDEO_CAPTURE
fmt.pix.width : 1024
fmt.pix.height : 768
fmt.pix.pixelformat : 0x4745504a [JPEG]
fmt.pix.field : NONE
fmt.pix.bytesperline : 0
fmt.pix.sizeimage : 786432
fmt.pix.colorspace : JPEG
fmt.pix.priv : 4276996862
video overlay
VIDIOC_ENUM_FMT(0,VIDEO_OVERLAY)
index : 0
type : VIDEO_OVERLAY
flags : 0
description : "Planar YUV 4:2:0"
pixelformat : 0x32315559 [YU12]
VIDIOC_ENUM_FMT(1,VIDEO_OVERLAY)
index : 1
type : VIDEO_OVERLAY
flags : 0
description : "YUYV 4:2:2"
pixelformat : 0x56595559 [YUYV]
VIDIOC_ENUM_FMT(2,VIDEO_OVERLAY)
index : 2
type : VIDEO_OVERLAY
flags : 0
description : "24-bit RGB 8-8-8"
pixelformat : 0x33424752 [RGB3]
VIDIOC_ENUM_FMT(3,VIDEO_OVERLAY)
index : 3
type : VIDEO_OVERLAY
flags : 1
description : "JFIF JPEG"
pixelformat : 0x4745504a [JPEG]
VIDIOC_ENUM_FMT(4,VIDEO_OVERLAY)
index : 4
type : VIDEO_OVERLAY
flags : 1
description : "H.264"
pixelformat : 0x34363248 [H264]
VIDIOC_ENUM_FMT(5,VIDEO_OVERLAY)
index : 5
type : VIDEO_OVERLAY
flags : 1
description : "Motion-JPEG"
pixelformat : 0x47504a4d [MJPG]
VIDIOC_ENUM_FMT(6,VIDEO_OVERLAY)
index : 6
type : VIDEO_OVERLAY
flags : 0
description : "YVYU 4:2:2"
pixelformat : 0x55595659 [YVYU]
VIDIOC_ENUM_FMT(7,VIDEO_OVERLAY)
index : 7
type : VIDEO_OVERLAY
flags : 0
description : "VYUY 4:2:2"
pixelformat : 0x59555956 [VYUY]
VIDIOC_ENUM_FMT(8,VIDEO_OVERLAY)
index : 8
type : VIDEO_OVERLAY
flags : 0
description : "UYVY 4:2:2"
pixelformat : 0x59565955 [UYVY]
VIDIOC_ENUM_FMT(9,VIDEO_OVERLAY)
index : 9
type : VIDEO_OVERLAY
flags : 0
description : "Y/CbCr 4:2:0"
pixelformat : 0x3231564e [NV12]
VIDIOC_ENUM_FMT(10,VIDEO_OVERLAY)
index : 10
type : VIDEO_OVERLAY
flags : 0
description : "24-bit BGR 8-8-8"
pixelformat : 0x33524742 [BGR3]
VIDIOC_ENUM_FMT(11,VIDEO_OVERLAY)
index : 11
type : VIDEO_OVERLAY
flags : 0
description : "Planar YVU 4:2:0"
pixelformat : 0x32315659 [YV12]
VIDIOC_ENUM_FMT(12,VIDEO_OVERLAY)
index : 12
type : VIDEO_OVERLAY
flags : 0
description : "Y/CrCb 4:2:0"
pixelformat : 0x3132564e [NV21]
VIDIOC_ENUM_FMT(13,VIDEO_OVERLAY)
index : 13
type : VIDEO_OVERLAY
flags : 0
description : "32-bit BGRA/X 8-8-8-8"
pixelformat : 0x34524742 [BGR4]
VIDIOC_G_FMT(VIDEO_OVERLAY)
type : VIDEO_OVERLAY
fmt.win.w.left : 150
fmt.win.w.top : 50
fmt.win.w.width : 1024
fmt.win.w.height : 768
fmt.win.field : NONE
fmt.win.chromakey : 0
fmt.win.clips : (nil)
fmt.win.clipcount : 0
fmt.win.bitmap : (nil)
VIDIOC_G_FBUF
capability : 0x21 [EXTERNOVERLAY,(null)]
flags : 0x2 [OVERLAY]
base : (nil)
fmt.width : 1024
fmt.height : 768
fmt.pixelformat : 0x32315559 [YU12]
fmt.field : ANY
fmt.bytesperline : 1024
fmt.sizeimage : 1179648
fmt.colorspace : SMPTE170M
fmt.priv : 0
controls
VIDIOC_QUERYCTRL(BASE+0)
id : 9963776
type : INTEGER
name : "Brightness"
minimum : 0
maximum : 100
step : 1
default_value : 50
flags : 32
VIDIOC_QUERYCTRL(BASE+1)
id : 9963777
type : INTEGER
name : "Contrast"
minimum : -100
maximum : 100
step : 1
default_value : 0
flags : 32
VIDIOC_QUERYCTRL(BASE+2)
id : 9963778
type : INTEGER
name : "Saturation"
minimum : -100
maximum : 100
step : 1
default_value : 0
flags : 32
VIDIOC_QUERYCTRL(BASE+14)
id : 9963790
type : INTEGER
name : "Red Balance"
minimum : 1
maximum : 7999
step : 1
default_value : 1000
flags : 32
VIDIOC_QUERYCTRL(BASE+15)
id : 9963791
type : INTEGER
name : "Blue Balance"
minimum : 1
maximum : 7999
step : 1
default_value : 1000
flags : 32
VIDIOC_QUERYCTRL(BASE+20)
id : 9963796
type : BOOLEAN
name : "Horizontal Flip"
minimum : 0
maximum : 1
step : 1
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+21)
id : 9963797
type : BOOLEAN
name : "Vertical Flip"
minimum : 0
maximum : 1
step : 1
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+24)
id : 9963800
type : MENU
name : "Power Line Frequency"
minimum : 0
maximum : 3
step : 1
default_value : 1
flags : 0
VIDIOC_QUERYCTRL(BASE+27)
id : 9963803
type : INTEGER
name : "Sharpness"
minimum : -100
maximum : 100
step : 1
default_value : 0
flags : 32
VIDIOC_QUERYCTRL(BASE+31)
id : 9963807
type : MENU
name : "Color Effects"
minimum : 0
maximum : 15
step : 1
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+34)
id : 9963810
type : INTEGER
name : "Rotate"
minimum : 0
maximum : 360
step : 90
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+42)
id : 9963818
type : INTEGER
name : "Color Effects, CbCr"
minimum : 0
maximum : 65535
step : 1
default_value : 32896
flags : 0
v4l2-ctl --list-devices
mmal service 16.1 (platform:bcm2835-v4l2):
/dev/video0
v4lctl list
attribute | type | current | default | comment
-----------+--------+---------+---------+-------------------------------------
norm | choice | (null) | (null) |
input | choice | Camera | Camera | Camera 0
bright | int | 50 | 50 | range is 0 => 100
contrast | int | 0 | 0 | range is -100 => 100
color | int | 0 | 0 | range is -100 => 100
Red Balanc | int | 1000 | 1000 | range is 1 => 7999
Blue Balan | int | 1000 | 1000 | range is 1 => 7999
Horizontal | bool | off | off |
Vertical F | bool | off | off |
Power Line | choice | 50 Hz | 50 Hz | Disabled 50 Hz 60 Hz Auto
Sharpness | int | 0 | 0 | range is -100 => 100
Color Effe | choice | None | None | None Black & White Sepia Negative Emboss Sketch Sky Blue Grass Green Skin Whiten Vivid Aqua Art Freeze Silhouette Solarization Antique Set Cb/Cr
v4lctl -c /dev/video0 snap jpeg 1280x1024 snap.jpg
streamer -c /dev/video0 -b 16 -o snap.jpeg
4. deps
ldd /opt/raspivid/raspivid
linux-vdso.so.1 => (0x7ee06000)
libmmal_core.so => /opt/raspivid/libmmal_core.so (0x76f58000)
libmmal_util.so => /opt/raspivid/libmmal_util.so (0x76f38000)
libmmal_vc_client.so => /opt/raspivid/libmmal_vc_client.so (0x76f1d000)
libbcm_host.so => /opt/raspivid/libbcm_host.so (0x76ef5000)
libvcsm.so => /opt/raspivid/libvcsm.so (0x76ee1000)
libvchiq_arm.so => /opt/raspivid/libvchiq_arm.so (0x76ecb000)
libvcos.so => /opt/raspivid/libvcos.so (0x76eb1000)
libpthread.so.0 => /lib/libpthread.so.0 (0x76e8a000)
libdl.so.2 => /lib/libdl.so.2 (0x76e74000)
librt.so.1 => /lib/librt.so.1 (0x76e5d000)
libc.so.6 => /lib/libc.so.6 (0x76d0c000)
/lib/ld-linux-armhf.so.3 (0x54b24000)
5. streaming
yum install nc
5.1. on the pi
raspivid -t 0 -br 60 -w 1024 -h 768 -ih -fps 40 -o - | nc -4 -v -k -l -p 2222
5.2. on the client
mplayer -fps 40 -demuxer h264es ffmpeg://tcp://mmc056e.d01.net:2222