linux usb摄像头使用方法,linux 下USB 摄像头的使用说明

此处我只说用uvc通用驱动

查询摄像头是否是UVC设备,参见官网

1 找到CAMERA ID

2 lsusb -d VID:PID -v | grep “14 Video”

如果输出有下面信息说明支持

bFunctionClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

bInterfaceClass 14 Video

lsusb -d VID:PID -v 可以列出了一个usb设备的有所信息,接口,更详细的树形图lsusb -t

UVC驱动代码详解

详情请看此系列博文

我要说的一点就是该驱动的可能限制,在写应用程序时就要注意到。

uvc_driver.c里头一段话就说了驱动的限制:

This driver aims to support video input and ouput devices compliant with the ‘USB Video Class’ specification.

The driver doesn’t support the deprecated v4l1 interface. It implements the mmap capture method only, and doesn’t do any image format conversion in software. If your user-space application doesn’t support YUYV or MJPEG, fix it :-). Please note that the MJPEG data have been stripped from their Huffman tables (DHT marker), you will need to add it back if your JPEG codec can’t handle MJPEG data.

从中看出以下几点:

1 只支持mmap方式 ,不支持read,usrptr什么的。所以v4l2里说的用户获取摄像头数据的方式有三种在这个驱动里那是没有的,到底支不支持你要看看你自己的内核里面的驱动说明了。

2 不再支持v4l1接口

3 不做任何图像格式转换,只输出YUYV或MJPEG(?)

4 MJPEG 格式的data没有Huffman tables,所以如果要做格式转换需要自己加入Huffman tables才行。

明明是UVC摄像头,但不是不支持怎么办?

更新驱动文件吧,下载下来的内核里的uvc驱动并不是最新的,现在摄像头做的快,肯定是跟不上的,也可以自己改,一般在 static struct usb_device_id uvc_ids[]这个结构里增加你的摄像头型号就好了:

比如我的摄像头是0ac8:3420,就不支持,那么在drivers/media/video/uvc/uvc_driver.c的uvd_ids中增加如下就行。

{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE

| USB_DEVICE_ID_MATCH_INT_INFO,

.idVendor = 0x0ac8,

.idProduct = 0x3420,

.bInterfaceClass = USB_CLASS_VIDEO,

.bInterfaceSubClass = 1,

.bInterfaceProtocol = 0,

.driver_info = UVC_QUIRK_FIX_BANDWIDTH },

心得

在编译uvc驱动的内核时,最好将它们以模块的方式编译内核,并勾选上自动加载(Automatic kernel module loading),新版内核如果选择了加载模块就默认了似乎,因为我也没找到这选项。一插上摄像头,uvc相关模块就自动加载了。如下:

# lsmod

Module Size Used by Not tainted

uvcvideo 64611 0

videobuf2_core 21211 1 uvcvideo

videodev 85103 2 uvcvideo,videobuf2_core

videobuf2_vmalloc 2119 1 uvcvideo

videobuf2_memops 1550 1 videobuf2_vmalloc

leds_s3c24xx 1193 0

led_class 2321 1 leds_s3c24xx

evbug 1594 0

#

和linux中加载模块有关的几个命令分别如下:

depmod, modprobe, lsmod,insmod

depmod:在busybox

这样如果有驱动不行,还可以修改编译后再试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值