-
Linux
下摄像头驱动支持情况
Linux
下摄像头驱动支持情况
/blog/cns!97719476F5BAEDA4!
/blog/static/3/
本文所说的摄像头
(Webcam)
,特指
USB
摄像头。
p>
在
Windows
下,摄像头驱动由厂商开
发并提供。但在
Linux
下,因商业利益有限,只
有极少厂商愿意提供摄像头驱动支持。
这并不妨碍
Linux
下摄像头的使用——广大第三方志
愿者维护着大大小
小的驱动。之前做过一个嵌入式皮毛项目,虽然摄像头驱动不关我的事,
在好奇心驱使下
简要探索了一番。
结果是有些胸闷,
它们像蜘蛛丝一样杂乱。<
/p>
写本文的动机
是想理清一下主线,给后来者提供一点有限的参考,
但无法保证下面的文字完全正确。
常见的摄像头驱动有以下几个系列:
OVCam drivers(ov5xx)
该系列驱动是针对
OmniVision OV5xx
系列芯片,
此类芯片被广泛运用于各种
USB<
/p>
摄像
头
中
,
p>
在
嵌
入
式
开
发
板
上
尤
其
常
见
< br>。
凡
是
使
用
了
OV511/OV511+/OV518
/OV6620/OV6630/OV7610/OV7620/OV7 620AE<
/p>
等图像传感器的摄像头都可以在该驱动下工
作。
< br>
项目主页:
/ov511/
Philips USB Webcam
Driver(pwc)
该驱动主要用于
Philips
p>
及
pwc
芯片兼容摄像头。
由于
原开发者与
Philips
公司签有保密协定,该驱动以二进制形式提供,后来被踢出内核,引起
一场口水战:<
/p>
是用户需求重要还是保持内核纯洁重要?所幸后续开发者从原项目上创建了一
个新的分支,使得该项目继续存活。
项目主页:
/linux/pwc/
QuickCam
USB
camera
driver
(qc-usb)
该驱动主要用于
L
ogitech
公司的
QuickCam
Express
系列和其它兼容型号摄像头。最初由
Geo
rg
Acher
开发,当时命名为
qce-
ga
。
Jean-Frederic Clere
参考该驱动创建出了第一个
Video4Linux
兼容驱动。
从那开始,
不断有开
发者加
入,使得该驱动逐渐能够支持新的摄像头和芯片。在此期间,该驱动更名为
qc-usb
,
更为广泛地支持其它
QuickCa
m USB
摄像头,而不再是局限于
Express
系列。
项目主页:
/
QuickCam Messenger &
Communicate driver(quickcam)
这是另一个针对
QuickCam
摄像
头
的
驱
动
,
它
仅
支
持
某<
/p>
一
些
型
号
,
并
且
与
qc-usb
驱
动
不
p>
兼
容
。
项
目
主
页
:
/messenger/
SPCA webcam driver(gspca/spca5xx)
该系列驱动适用于
Sunplus
芯片摄像头,也
适用于
其它芯片,如目前国内山寨摄像头一哥“中星微”
(Z-
Star)
芯片。
Michel Xhaard
是该项目的
维护者,他在
60
岁左右的时候(大约是
2003
年)从一种普通常见的驱动入手
,进而不断修
改开发成一个支持
250
种以上摄像头的通用驱动。
他还写了流媒体服务器
spcase
rv
与客户端
spcaview
。不少
高校所谓的嵌入式无线网络视频传输项目,就是从这两个东西来的。
项目主页:
/
Linux UVC driver(uvc)
该驱动适用于符合
USB
视频类
< br>(USB Video Class)
规范的摄像头
设备
,
它包括
V4L2
内核设备驱动和用户
空间工具补丁。
大多数大容量存储器设备
(如优盘)
都遵循
USB
规范,因而仅用一个单一驱动就可以
操作它们。与此类似,
UVC
兼容外设只需
要一个通用驱动即可。
USB
摄像头大体上可以二分为
UVC
cameras
和
non-UVC
cameras
。推荐购买
UVC <
/p>
cameras
。
UVC
是一个开放的标准,拥有维护良好的驱动,它属于内核代码的一部分。插入
摄像
头后就可以工作,而无须编译或安装额外的驱动。
non-
UVC
cameras
通常情况下不比
UVC
cameras
工作出色,
前者的驱动并不遵循通用的协议,<
/p>
需要针对每种摄像头做出单独的
处理,这往往需要一个逆向工程的
探索过程。
p>
判断一个摄像头是否属于
UVC
规范可以使
用下面方法:
p>
1.
使用
lsusb
命令或其它硬件信息查看工具找出摄像头的设备号
(Vendor
ID)
和产品号
(Product
ID)
。如
Logitech Quickcam for
Notebooks Pro
摄像头是
046d:08cb
p>
;
2.
查找是否有视频类接口信息
lsusb -d
046d:08cb -v | grep
p>
如果该摄像头兼容
UVC
,则会输出类似信
息
bFunctionClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass
14 Video
bInterfaceClass 14 Video
若无以上信息,则是
non-
UVC
设备。
项目主页:
/
在
Lin
ux
下摄像头驱动有三种存在形式,内置于内核
(within
the kernel)
,做为一个外挂
的模块
(module)
,或者是预编译的二进制程序
(pr
e-compiled binary)
。