今天需要给3D打印机装一个监控,正好有个C920和orangepi zero2闲置。
usb插入设备
1 2 3 4 5 6 7 8 9 10 |
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视频的,那么直接开始直播。
1 2 3 |
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 关闭自动对焦。先查看下摄像头支持哪些操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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 这一项就是控制自动对焦,通过命令关闭
1 |
v4l2-ctl -d /dev/video1 --set-ctrl=focus_automatic_continuous=0 |
操作后,画面不在自动对焦,这个操作在设备打开并直播的中途也可以执行,效果立见。
顺便查看ffmpeg进程,由于是在摄像头那编码,只占用cpu 2.3% ,非常好。但摄像头编码有2秒左右延迟,挖个坑,后期尝试下orangepi开发板上,h264_v4l2m2m是否能用于硬编码。
原创文章,转载请注明: 转载自贝壳博客
本文链接地址: 罗技C920使用嵌入式设备直播