linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法

linux系统上一般使用 video4linux2来操作系统摄像。

1.安装一个 v4l2-ctrl工具:

 sudo apt install v4l-utils

2.查看摄像头支持的视频参数 

sudo v4l2-ctl --all --list-formats-ext

显示信息参考如下(这是我的摄像头,不同的摄像头会有区别 ):

------

ioctl: VIDIOC_ENUM_FMT

Index       : 0

Type        : Video Capture

Pixel Format: 'YUYV'

Name        : YUYV 4:2:2

Size: Discrete 640x480

Interval: Discrete 0.033s (30.000 fps)

Interval: Discrete 0.042s (24.000 fps)

Interval: Discrete 0.050s (20.000 fps)

Interval: Discrete 0.067s (15.000 fps)

Interval: Discrete 0.100s (10.000 fps)

Interval: Discrete 0.133s (7.500 fps)

Interval: Discrete 0.200s (5.000 fps)

------

这里要注意3个参数,Pixel Format 是视频的格式,Size是视频分辨率,Interval是支持帧率。

通常的USB摄像头,对高清视频,如1080,在YUYV格式下,都支持不到25-30帧,一般在3-5帧,原因可能是考虑USB的传输速度;同时,摄像头一般会提供MJPEG的压缩视频格式,内容参考如下:

Index       : 1

Type        : Video Capture

Pixel Format: 'MJPG' (compressed)

Name        : Motion-JPEG

......

Size: Discrete 1920x1080

Interval: Discrete 0.033s (30.000 fps)

Interval: Discrete 0.042s (24.000 fps)

Interval: Discrete 0.050s (20.000 fps)

Interval: Discrete 0.067s (15.000 fps)

Interval: Discrete 0.100s (10.000 fps)

Interval: Discrete 0.133s (7.500 fps)

Interval: Discrete 0.200s (5.000 fps)

------

因此在使用USB摄像头进行1080分辨率的采集时,需要指定视频格式为MJPEG,参考的ffmpeg命令如下:

ffmpeg -f v4l2 -s 1920x1080 -r 30 -vcodec mjpeg -i /dev/video0 -pix_fmt yuv420p -b:v 2000k -vcodec libx264 -preset veryfast -an usb-1080-x264-2m.mp4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值