安装
在 Debian / Ubuntu 系统中安装 v4l2-ctl(属于 v4l-utils 软件包):
apt install v4l-utils
查看设备列表
v4l2-ctl --list-devices
输出会列出每个设备及其关联的 /dev/videoN、/dev/mediaN 节点:
HikCamera: UVC Camera (usb-0000:02:03.0-1):
/dev/video0
/dev/video1
/dev/media0
查看设备详细信息
v4l2-ctl -d /dev/video0 --all
示例输出:
Driver Info:
Driver name : uvcvideo
Card type : HikCamera: UVC Camera
Bus info : usb-0000:02:03.0-1
Driver version : 5.15.199
...
查看支持的格式、分辨率和帧率
v4l2-ctl -d /dev/video0 --list-formats-ext
示例输出:
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 256x392
Interval: Discrete 0.040s (25.000 fps)
...
[1]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 120x160
Interval: Discrete 0.040s (25.000 fps)
...
[2]: 'H264' (H.264, compressed)
Size: Discrete 240x320
Interval: Discrete 0.033s (30.000 fps)
设置采集格式
设置 800×600 的 UYVY 格式:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=800,height=600,pixelformat=UYVY
设置前应先通过 --list-formats-ext 确认该设备支持对应的像素格式和分辨率;驱动可能会将不支持的请求调整为最接近的有效值。
获取一帧数据
采集一帧 YUYV 原始数据:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=256,height=392,pixelformat=YUYV --stream-mmap --stream-count=1 --stream-to=frame.raw
采集一帧 MJPEG 数据:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=256,height=392,pixelformat=MJPG --stream-mmap --stream-count=1 --stream-to=frame.jpg
--stream-mmap 表示使用 mmap 方式采集;--stream-count=1 限制采集一帧;--stream-to 指定输出文件。YUYV 输出是裸像素数据,需要按分辨率和像素格式解释;MJPEG 输出通常可直接作为 JPEG 图片打开。