Das Ausführen von mehr als einer USB-Webcam unter Debian / Linux führt zu folgendem Fehler:
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
Was anfangs ein Programmierproblem in OpenCV zu sein schien, entwickelte sich zu einer Suche nach einem mysteriösen Hardware- / Softwareproblem, nachdem die gleichen Fehler bei der Ausführung von cheese und xawtv aufgetreten waren.
Anscheinend wird dies durch Webcams verursacht, die die gesamte verfügbare Bandbreite des USB-Hostcontrollers abfragen. Vor diesem Hintergrund habe ich mich für Wireshark und Capinfos entschieden, um zu sehen, wie viel Bandbreite eine einzelne Kamera verbraucht.
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
Interessant! Das könnte erklären, warum zwei Kameras mit 320x240 funktionieren, eine höhere Auflösung jedoch ausfällt. Es ist, als würde mein USB-Controller nur mit USB 1-Geschwindigkeit betrieben, aber lsusb zeigt beide Webcams, die zu einem Gerät gehören, das angeblich 480 Megabits pro Sekunde unterstützt.
In einer Lösung wurde vorgeschlagen, die Webcams zu zwingen, ihre Bandbreitennutzung zu berechnen, anstatt ihr Maximum durch Ausführen der folgenden Befehle anzufordern:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
Da dies leider keinen Unterschied machte, habe ich mich für eine andere Lösung entschieden. In einem Beitrag auf StackOverflow wurde empfohlen, dass meine Webcams ein niedrigeres FPS- oder komprimiertes Videoformat wie MJPEG verwenden sollen. Nach dem Ausführen von v4lctl list wird jedoch nicht angezeigt, dass eine meiner Webcams das Ändern des Videomodus unterstützt.
Und da stecke ich fest. Warum würden zwei Webcams, die deutlich unter der maximalen Geschwindigkeit von USB 2 arbeiten, diesen Fehler verursachen?
ps: Es ist kein Speicherplatzproblem, df zeigt beim Starten der Webcams keine Änderung an.
pps: Wenn es einen Unterschied macht, ist hier die Ausgabe von lsusb