libv4l2:启用流错误:设备上没有剩余空间

时间:2012-07-09 12:08:48

标签: linux usb webcam

我尝试为opencv获取立体声对。我将Logitech B910和Logitech C910网络摄像头连接到USB。但是有这个错误。我使用了quirks参数并在mplayer中设置了outfmt=mjpeg,但又出现了这个错误。

在哪里可以找到uvcvideo或usb驱动程序中的错误?我应该使用哪种监控或调试工具?

4 个答案:

答案 0 :(得分:8)

这是一个措辞错误的错误消息;原因是控制器上没有足够的USB带宽。

正如您所猜测的,如果您可以让您的相机使用MJEPG,您的问题将得到解决。

OpenCV可能正在使用FFMPEG进行获取,(linux构建通常具有FFMPEG支持),OpenCV文档承认如果使用FFMPEG,则无法更改获取格式。

我在研究中发现,您需要更改FFMPEG配置。

如果可以,请尝试将相机移动到不同的USB控制器。

答案 1 :(得分:3)

这对我来说很有魅力

sudo rmmod uvcvideo

sudo modprobe uvcvideo quirks=128

每次重启都会重置。如果此方法有效,请创建以下文件:sudo vi /etc/modprobe.d/uvcvideo.conf,其中包含以下行:options uvcvideo quirks=128

点击此链接http://renoirsrants.blogspot.in/2011/07/multiple-webcams-on-zoneminder.html

答案 2 :(得分:0)

这是USB控制器空间不足的问题。

通常可以通过将设备插入不同的USB端口来解决此问题。例如,我的主板上有eSATA端口,USB 2端口和USB 3端口。如果您以前使用USB2端口,请尝试使用USB3端口。

您可以通过Ubuntu上的命令行通过

查看视频卡分配
cat /sys/kernel/debug/usb/devices | grep "B: "

根据发行版,您可能必须使用sudo。如果你是windows,或osx抱歉,我不知道这些系统的解决方案。

我的结果看起来像这样。

B:  Alloc=  0/800 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
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc=140/900 us (16%), #Int=  4, #Iso=  0
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
B:  Alloc= 17/900 us ( 2%), #Int=  1, #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=  1, #Iso=  0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0

答案 3 :(得分:0)

我刚遇到这个问题,事实证明我必须将我的WebCam(Logitech QuickCam Zoom)连接到USB 2.0端口,而不是首先插入的USB 3.0端口。