Linux摄像头驱动使用技巧与问题排查指南
lsusb命令查看USB设备列表,确认摄像头是否在输出中(如“Logitech, Inc. Webcam C270”);或用lspci -k(针对PCI/PCIe摄像头)查看设备与驱动匹配情况。lsmod | grep uvcvideo检查是否加载。若未加载,手动执行sudo modprobe uvcvideo加载。.deb或源码包)。安装时注意:
sudo dpkg -i driver.deb安装.deb包;./configure && make && sudo make install编译安装。/dev/video0)默认属video组。将当前用户加入该组以获取访问权限:sudo usermod -a -G video $USER
sudo chmod 660 /dev/video0 # 临时调整权限(重启后可能失效)
注销并重新登录使组权限生效。v4l2-ctl --all(显示摄像头型号、支持的分辨率/帧率、控件列表);v4l2-ctl --set-ctrl brightness=150 # 调整亮度(0-255)
v4l2-ctl --set-ctrl contrast=100 # 调整对比度(0-255)
v4l2-ctl --set-fmt-video=pixelformat=MJPG,width=1280,height=720 # 设置分辨率与像素格式
v4l2-ctl --list-formats(查看摄像头支持的像素格式,如MJPG、YUYV)、v4l2-ctl --list-framesizes(查看支持的分辨率)。cheese即可打开摄像头;sudo apt install guvcview)。fswebcam -d /dev/video0 -r 1280x720 test.jpg(-d指定设备,-r设置分辨率);ffmpeg -f v4l2 -i /dev/video0 -c:v copy output.mp4(-c:v copy表示直接复制视频流,避免编码延迟)。dmesg | grep usb日志,确认是否有“unable to enumerate device”等错误;lsmod | grep uvcvideo),若未加载则手动加载。v4l2-ctl调整亮度、对比度、饱和度等参数;video组(groups $USER查看);ls -l /dev/video0),若权限为root:root,则执行sudo chmod 660 /dev/video0调整。udev服务:sudo systemctl restart udev。dmesg查看内核日志,定位错误原因(如“usb_submit_urb failed”表示USB传输失败);或使用strace跟踪应用程序的系统调用,找出驱动交互中的问题(如strace -o camera.log fswebcam -d /dev/video0 test.jpg)。