webcam是usb camera么?
是的,Webcam通常指的是USB摄像头,也称为网络摄像头。
这个文件包含一些有关飞利浦和OEM网络摄像头的附加信息。电子邮件:webcam@smcc.demon.nl,上次更新时间为2004-01-19,网站为http://www.smcc.demon.nl/webcam/。
目前支持以下摄像头:
• 飞利浦PCA645
• 飞利浦PCA646
• 飞利浦PCVC675
• 飞利浦PCVC680
• 飞利浦PCVC690
• 飞利浦PCVC720/40
• 飞利浦PCVC730
• 飞利浦PCVC740
• 飞利浦PCVC750
• Askey VC010
• 创新实验室Webcam 5
• 创新实验室Webcam Pro Ex
• 罗技QuickCam 3000 Pro
• 罗技QuickCam 4000 Pro
• 罗技QuickCam Notebook Pro
• 罗技QuickCam Zoom
• 罗技QuickCam Orbit
• 罗技QuickCam Sphere
• 三星MPC-C10
• 三星MPC-C30
• Sotec Afina Eye
• AME CU-001
• Visionite VCS-UM100
• Visionite VCS-UC300
飞利浦驱动程序的主网页位于上述地址。它包含了许多额外的信息、FAQ和二进制插件“PWCX”。该插件包含了解压缩例程,允许您使用更高的图像尺寸和帧速率;此外,网络摄像头在USB总线上使用的带宽更少(如果您想要同时运行多个相机,则非常方便)。这些例程受NDA保护,因此不能作为源代码进行分发;但是,它的使用完全是可选的。
您可以将此代码构建到内核中,也可以构建为模块。我推荐后者,因为它可以更容易地进行故障排除。通过USB音频类支持内置麦克风。
当您加载模块时,您可以为摄像头设置一些默认设置;某些程序依赖于特定的图像大小或格式,并且可能不知道如何在驱动程序中正确设置它。可用的选项有:
size
该选项可以是“sqcif”、“qsif”、“qcif”、“sif”、“cif”或“vga”,分别对应于图像尺寸为128x96、160x120、176x144、320x240、352x288和640x480(当然,仅针对支持这些分辨率的相机)。
fps
指定所需的帧率,是4-30范围内的整数。
fbufs
表示要用于存储摄像头帧的内部缓冲区的数量。如果从摄像头读取图像的进程有些慢或短暂忙碌,这将有所帮助。但是,在较慢的机器上,它只会产生延迟,因此请谨慎选择。默认值为3,这是合理的。您可以将其设置在2到5之间。
mbufs
是一个1到10之间的整数,它告诉模块为mmap()、VIDIOCCGMBUF、VIDIOCMCAPTURE和其他相关操作保留的缓冲区数量。默认值为2,对于大多数应用程序来说已经足够了(双缓冲)。如果使用支持mmap()的工具进行抓取时遇到了很多“Dumping frame…”消息,则可以增加此值。然而,它并没有真正缓存图像,只是在您的程序落后时给您更多的余地。但是,您需要一个多线程或分叉程序才能真正利用这些缓冲区。绝对最大值为10,但不要将其设置得太高!每个缓冲区占用460 KB的内存,因此除非您有大量内存,否则将其设置为大于4的值是绝对浪费。此内存仅在打开时分配,因此在不使用相机时不会浪费。
power_save
启用后(设置为1),模块将尝试在关闭时关闭摄像头,并在打开时重新激活。这将节约电力并关闭LED灯。但并非所有相机都支持此功能(645和646根本没有节能功能),有些型号也不可用(它们将关闭,但永远无法唤醒)。考虑到这是实验性的,该选项默认禁用。
compression
(仅适用于插件)此选项可控制相机在通过USB总线压缩图像时使用的压缩因子。您可以将参数设置为0到3之间:
0 = prefer uncompressed images; if the requested mode is not available
in an uncompressed format, the driver will silently switch to low
compression.
1 = low compression.
2 = medium compression.
3 = high compression.
高压缩当然需要更少的带宽,但也可能引入一些不必要的伪影。默认值为2,中等压缩。查看网站上的常见问题解答以了解哪些模式需要压缩的概述。
压缩参数不适用于645和646相机以及从它们派生的OEM型号(只有很少数)。大多数相机都支持此参数。
leds
设置需要两个整数,用于定义LED的开/关时间(以毫秒为单位)。其中一个有趣的用途是在使用相机时让LED闪烁。可以通过以下方式实现:
leds=500,500
将会使led每秒闪烁一次,但如下参数:
leds=0,0
LED永远不会亮起,适合进行安静的监视。默认情况下,相机在使用时LED保持点亮状态,并在不再使用相机时关闭。
此参数仅适用于ToUCam系列相机(720、730、740、750)和OEM型号。对于其他相机,该命令将被忽略,并且无法控制LED。
最后:此参数在第一次打开相机设备之前不会生效。在此之前,LED仍然保持点亮状态。
dev_hint
USB设备的一个长期问题是其动态性:您永远不知道摄像头将被分配给哪个设备;它取决于模块加载顺序、集线器配置、设备插入顺序以及月相(即它可能是随机的)。使用此选项,您可以向驱动程序提供提示,告诉它应该使用哪个视频设备节点(/dev/videoX)与特定摄像头配对。如果您有两个相同型号的摄像头,这也很方便。
摄像机由其类型(摄像机型号中的数字,如PCA645、PCVC750VC等)指定,可选地包括序列号(在/sys/kernel/debug/usb/devices中可见)。提示由具有以下格式的字符串组成:
[type[.serialnumber]:]node
方括号表示类型和序列号都是可选的,但是不能指定序列号而不指定类型(这将没有意义)。序列号与类型之间用“.”分隔;节点编号用“:”分隔。
以下是一些例子,以更好地解释这种有点神秘的语法:
值得注意的一些要点:
• 序列号区分大小写,必须完整地写出,包括前导零(它被视为字符串)。
• 如果设备节点已经被占用,注册将失败,摄像头将不可用。
• 您最多可以有64个视频设备;如果要扩展编号,请确保在/dev中有足够的设备节点。 /dev/video9之后是/dev/video10(而不是/dev/videoA)。
• 如果相机与任何dev_hint不匹配,则像以前一样,它将被分配给第一个可用的设备节点。
trace
为了更好地检测问题,现在可以打开模块进行某些调用的“跟踪”;它记录内核日志中的所有项,以调试级别。
跟踪变量是一个位掩码;每个位表示特定的功能。如果您想要跟踪某些内容,请在下表中查找位值,将这些值相加并提供给跟踪变量。
例如,要跟踪open()和read()函数,将8 + 4求和得到12,因此您在insmod或modprobe期间应提供trace=12。如果要关闭初始化和探测跟踪,则将trace设置为0。跟踪的默认值为35(0x23)。
例子:
# modprobe pwc size=cif fps=15 power_save=1
fbufs、mbufs和trace参数是全局的,并适用于所有连接的摄像头。每个摄像头都有自己的缓冲区集。
size和fps仅在打开设备时指定默认值;这是为了适应某些不设置大小的工具。您可以使用Video4Linux ioctl()调用在open()之后更改这些设置。默认值为QCIF大小,帧速率为10 fps。
压缩参数是半全局的;它设置所有摄像机的初始压缩偏好,但是可以使用VIDIOCPWCSCQUAL ioctl()调用为每个摄像机设置此参数。
所有参数都是可选的。