Debian / Linuxで複数のUSB Webカメラを実行すると、次のエラーが発生します。
libv4l2: error turning on stream: No space left on device
VIDIOC_STREAMON: No space left on device
当初、OpenCVのプログラミングの問題のように思われたものが、チーズとxawtvを実行して同じエラーが発生した後、謎のハードウェア/ソフトウェアの問題の探求に変わりました。
どうやらそれは、USBホストコントローラーで利用可能なすべての帯域幅を要求するウェブカメラが原因です。それを念頭に置いて、wiresharkとcapinfosを実行して、1台のカメラがどれだけの帯域幅を使用しているかを確認することにしました。
4 megabits per second at 320x240
14 megabits per second at 640x480
32 megabits per second at 1280x720
面白い!320x240の2台のカメラが機能するが、それ以上の解像度は失敗する理由を説明するかもしれません。USBコントローラーがUSB 1の速度でのみ動作しているように見えますが、lsusbは、480メガビット/秒をサポートするデバイスに属する両方のWebカメラを表示します。
1つのソリューションでは、次のコマンドを実行して最大値を要求するのではなく、ウェブカメラに帯域幅使用量を強制的に計算させることを提案しました。
sudo rmmod uvcvideo
sudo modprobe uvcvideo quirks=128
残念ながら違いはありませんでしたので、別の解決策を試してみることにしました。StackOverflowの投稿では、Webカメラに低FPSまたはMJPEGなどの圧縮ビデオ形式を使用するように指示することが提案されましたが、v4lctl listを実行した後、ビデオモードの変更をサポートするWebカメラは表示されません。
そして、それは私が立ち往生しているところです。USB 2の最大速度を十分に下回る速度で動作する2つのWebカメラがこのエラーを生成するのはなぜですか?
ps:ディスク容量の問題ではありません。ウェブカメラの起動時にdfに変更は表示されません。
pps:違いがある場合、ここにlsusbの出力があります