今天需要给3D打印机装一个监控,正好有个C920和orangepi zero2闲置。
usb插入设备
root@orangepizero2:~# v4l2-ctl --list-devices
cedrus (platform:cedrus):
/dev/video0
/dev/media0
HD Pro Webcam C920 (usb-5200000.usb-1):
/dev/video1
/dev/video2
/dev/media1
可以看到已识别到设备,由于这款C920摄像头内集成264编码,因此通过v4l是可以直接从摄像头取264视频的,那么直接开始直播。
ffmpeg -f v4l2 -vcodec h264 -video_size 1920x1080 -i /dev/video1 -c copy -f flv rtmp://192.168.0.2/live/3d
ffplay rtmp://192.168.0.2/live/3d

吊装效果

这款摄像头有自动对焦功能,由于画面一直在动,摄像头一直处于对焦状态,需要通过v4l2-ctl 关闭自动对焦。先查看下摄像头支持哪些操作
root@orangepizero2:~# v4l2-ctl -d /dev/video1 --list-ctrls
User Controls
brightness 0x00980900 (int) : min=0 max=255 step=1 default=128 value=128
contrast 0x00980901 (int) : min=0 max=255 step=1 default=128 value=128
saturation 0x00980902 (int) : min=0 max=255 step=1 default=128 value=128
white_balance_automatic 0x0098090c (bool) : default=1 value=1
gain 0x00980913 (int) : min=0 max=255 step=1 default=0 value=27
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2 (60 Hz)
white_balance_temperature 0x0098091a (int) : min=2000 max=6500 step=1 default=4000 value=6014 flags=inactive
sharpness 0x0098091b (int) : min=0 max=255 step=1 default=128 value=128
backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=0 value=0
Camera Controls
auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=3 (Aperture Priority Mode)
exposure_time_absolute 0x009a0902 (int) : min=3 max=2047 step=1 default=250 value=333 flags=inactive
exposure_dynamic_framerate 0x009a0903 (bool) : default=0 value=1
pan_absolute 0x009a0908 (int) : min=-36000 max=36000 step=3600 default=0 value=0
tilt_absolute 0x009a0909 (int) : min=-36000 max=36000 step=3600 default=0 value=0
focus_absolute 0x009a090a (int) : min=0 max=250 step=5 default=0 value=0
focus_automatic_continuous 0x009a090c (bool) : default=1 value=1
zoom_absolute 0x009a090d (int) : min=100 max=500 step=1 default=100 value=100
可以看到,focus_automatic_continuous 这一项就是控制自动对焦,通过命令关闭
v4l2-ctl -d /dev/video1 --set-ctrl=focus_automatic_continuous=0
操作后,画面不在自动对焦,这个操作在设备打开并直播的中途也可以执行,效果立见。

顺便查看ffmpeg进程,由于是在摄像头那编码,只占用cpu 2.3% ,非常好。但摄像头编码有2秒左右延迟,挖个坑,后期尝试下orangepi开发板上,h264_v4l2m2m是否能用于硬编码。
原创文章,转载请注明: 转载自贝壳博客
本文链接地址: 罗技C920使用嵌入式设备直播