запуск более одной USB-камеры в Debian / Linux приводит к следующей ошибке:
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
то, что первоначально казалось проблемой программирования в OpenCV, превратилось в поиски загадочной аппаратной / программной проблемы после того, как те же ошибки были произведены запуском cheese и xawtv.
по-видимому, это вызвано веб-камер, запрашивающих всю доступную пропускную способность на хост-контроллере USB. Имея это в виду, я решил запустить wireshark и capinfos чтобы увидеть, сколько пропускной способности используется одна камера.
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
Интересные! Это может объяснить, почему две камеры на 320x240 работают, но любое более высокое разрешение терпит неудачу. Это как если бы мой контроллер USB работает только на скорости USB 1, но lsusb показывает обе веб-камеры, принадлежащие устройству, которое якобы поддерживает 480 мегабит в секунду.
одно из решений предложило заставить веб-камеры вычислять их использование полосы пропускания вместо запрос их максимум, выполнив следующие команды:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
к сожалению, это не имело значения, поэтому я решил попробовать другое решение. A post на StackOverflow предложил сказать моим веб-камерам использовать более низкий FPS или сжатый формат видео, такой как MJPEG, но после запуска список v4lctl он не появляется ни один из моих веб-камер поддерживают изменение их видео режим.
и вот где я застрял. Почему две веб-камеры работают хорошо ниже максимальной скорости USB 2 приведет к этой ошибке?
ps: это не проблема дискового пространства, df не отображает никаких изменений при запуске веб-камер.
pps: если это имеет значение, вот вывод lsusb