在不同的 USB 总线上设置网络摄像头

在不同的 USB 总线上设置网络摄像头

我的目标是同时从两个网络摄像头捕获 640x480 分辨率的图像。我目前遇到一个问题,我的两个网络摄像头插入不同的 USB 端口,但使用相同的 USB 总线。因此,我收到以下错误:

libv4l2: error turning on stream: No space left on device

VIDIOC_STREAMON: No space left on device

并且无法从 640x480 的两个摄像头进行捕获。因此,我希望能够将每个 Logitech 网络摄像头设置在不同的总线上,我相信这样我就可以同时从两个网络摄像头进行捕获。

这是输出系统盘显示:

总线 001 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器
总线 002 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器
总线 003 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 004 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 005 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 006 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 007 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 008 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器
总线 001 设备 003:ID 05ca:18b0 Ricoh Co., Ltd Sony Vaio 集成网络摄像头
总线 003 设备 002:ID 147e:1000 Upek 生物识别触摸芯片/触摸条指纹传感器
总线 002 设备 012:ID 046d:0821 Logitech, Inc. HD Webcam C910
总线 002 设备 007:ID 046d:0991 Logitech, Inc. QuickCam Pro 笔记本电脑
有没有办法将每个网络摄像头设置为使用不同的 USB 总线?

答案1

答案是:这实际上不是你的问题。

有些罗技相机有 USB 带宽分配错误。让我们看看是否如此。

cat /sys/kernel/debug/usb/devices | grep "B: "

将为您提供所有 USB 集线器的当前带宽分配,输出将如下所示:

B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc= 35/900 us ( 4%), #Int=  3, #Iso=  0
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0

如您所见,我的 usb3 集线器目前已分配 35 mbps。但是,某些罗技相机的问题在于,它们总是会分配尽可能多的速度(480 mbps),而不管模式如何。因此,这归结为简单的算术,即 480 + 480 > 900,而第二个相机“不适合”。

只要您的相机插入同一个硬件 USB 集线器,您就会遇到该问题。

还请记住,网络摄像头通常在 MJPEG 模式下为 640x480 分配 128mbps,在未压缩模式下分配 424mbps。

相关内容