Menjalankan lebih dari satu webcam USB di Debian / Linux menghasilkan kesalahan berikut:
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
Apa yang awalnya tampak sebagai masalah pemrograman di OpenCV berubah menjadi pencarian untuk masalah hardware / software misterius setelah kesalahan yang sama dihasilkan oleh menjalankan keju dan xawtv.
Tampaknya itu disebabkan oleh webcam yang meminta semua bandwidth yang tersedia pada pengontrol host USB. Dengan pemikiran itu aku memutuskan untuk berlari wireshark dan capinfos untuk melihat seberapa banyak bandwidth yang digunakan kamera tunggal.
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
Menarik! Itu mungkin menjelaskan mengapa dua kamera pada 320x240 berfungsi tetapi resolusi yang lebih tinggi gagal. Sepertinya kontroler USB saya hanya beroperasi pada kecepatan USB 1, belum lsusb menunjukkan kedua kamera web milik perangkat yang seharusnya mendukung 480 megabit per detik.
Salah satu solusi yang diusulkan memaksa webcam untuk menghitung penggunaan bandwidth mereka alih-alih meminta maksimum dengan menjalankan perintah berikut:
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
Sayangnya itu tidak ada bedanya, jadi saya memutuskan untuk mencoba solusi lain. Pos di StackOverflow disarankan memberi tahu webcam saya untuk menggunakan FPS yang lebih rendah atau format video terkompresi seperti MJPEG, tetapi setelah berjalan daftar v4lctl tidak muncul salah satu webcam saya yang mendukung perubahan mode video mereka.
Dan di situlah saya terjebak. Mengapa dua webcam beroperasi jauh di bawah kecepatan maksimum USB 2 akan menghasilkan kesalahan ini?
ps: Ini bukan masalah ruang disk, df menampilkan tidak ada perubahan saat webcam dimulai.
pps: Jika ada bedanya, ini dia output dari lsusb