罗技C920使用嵌入式设备直播

今天需要给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使用嵌入式设备直播

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理