跳转到正文
命令速查

📷 V4L2 命令速查 ​

设备信息 ​

查询设备能力bash
v4l2-ctl -d /dev/video0 --all
列出所有视频设备bash
v4l2-ctl --list-devices
查询驱动信息bash
v4l2-ctl -d /dev/video0 -D

格式相关 ​

列出支持的所有格式bash
v4l2-ctl -d /dev/video0 --list-formats-ext
查看当前格式bash
v4l2-ctl -d /dev/video0 --get-fmt-video
设置格式bash
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=YUYV
常用像素格式bash
# YUYV422
pixelformat=YUYV

# NV12
pixelformat=NV12

# MJPEG
pixelformat=MJPEG

# H.264
pixelformat=H264

采集测试 ​

MMAP 方式采集 10 帧bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10
采集并保存为文件bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=1 --stream-to=output.yuv
显示帧率bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=100 --verbose
指定缓冲数量bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10 --buffer-count=4

控件 (Controls) ​

列出所有控件bash
v4l2-ctl -d /dev/video0 --list-ctrls
列出所有控件(含菜单)bash
v4l2-ctl -d /dev/video0 --list-ctrls-menus
获取控件值bash
v4l2-ctl -d /dev/video0 --get-ctrl=brightness
v4l2-ctl -d /dev/video0 --get-ctrl=exposure
设置控件值bash
v4l2-ctl -d /dev/video0 --set-ctrl=brightness=128
v4l2-ctl -d /dev/video0 --set-ctrl=exposure=1000
v4l2-ctl -d /dev/video0 --set-ctrl=auto_exposure=1
常用控件bash
brightness       # 亮度
contrast         # 对比度
saturation       # 饱和度
hue              # 色调
exposure         # 曝光
gain             # 增益
auto_exposure    # 自动曝光 (0=手动, 1=自动)
white_balance    # 白平衡

状态与调试 ​

查看设备状态bash
v4l2-ctl -d /dev/video0 --log-status
订阅事件bash
v4l2-ctl -d /dev/video0 --subscribe-event=all
查看缓冲信息bash
v4l2-ctl -d /dev/video0 --query-buffers

Media Controller ​

列出 Media 设备拓扑bash
media-ctl -d /dev/media0 --print-topology
查看实体信息bash
media-ctl -d /dev/media0 --print-dot
配置链路bash
media-ctl -d /dev/media0 --set-link '"imx477 2-001a":0->"rkisp1_isp":0[1]'
设置子设备格式bash
media-ctl -d /dev/media0 --set-v4l2 '"imx477 2-001a":0[fmt:YUYV8_2X8/1920x1080]'

I2C 工具 ​

扫描 I2C 总线bash
i2cdetect -y 1
读取寄存器(16位地址)bash
i2cget -y 1 0x1a 0x00 w
写入寄存器bash
i2cset -y 1 0x1a 0x00 0x01

常见问题排查 ​

DQBUF 超时 → 先查 Sensor 链路bash
# 1. 检查 I2C
i2cdetect -y 1

# 2. 检查设备树匹配
ls /sys/firmware/devicetree/base/

# 3. 查看驱动日志
dmesg | grep -i "v4l2\|isp\|mipi\|sensor"

# 4. 查看 ISP 状态
v4l2-ctl -d /dev/video0 --log-status

💡 更多 V4L2 原理说明 → V4L2 子系统