我用的是三个罗技 C920网络摄像头mjpg-streamer。设置工作得非常好,但我刚刚意识到它无法扩展。当我将帧速率从我通常喜欢的 5 FPS 提高到 10 FPS 或更高时,我开始遇到带宽问题(这应该或多或少相当于添加另一个网络摄像头)。基本上,我没有意识到 480Mbit/s 的理论限制是每个 USB 2.0 控制器;我以为是每个端口。这让我认为将 USB 2.0 的理论速度宣传为 480Mbit/s 是一种误导,但考虑到我还没有阅读 USB 规格,我会接受这个事实,即这纯粹是我的一个天真的假设。
我知道我设置这个的板子,英特尔 DN2800MT,只有一个 USB 2.0 控制器:
gw1 ~ # lsusb -t | grep ehci
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/8p, 480M
但我也知道我的 Logitech C920 网络摄像头支持硬件加速 h264 解码:
gw1 ~ # v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'H264' (compressed)
Name : H.264
Index : 2
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
因此,我应该能够通过将网络摄像头切换到 h264 模式来创建一个解决方法,因为我相信这会使用更少的带宽(然后当然使用不同的程序来获取图像,但把它留给我以后再做。)
考虑到所有这些,是否有任何方法可以找出 USB 控制器的总可用带宽目前被消耗了多少?这只会帮助我根据我对此设置的经验给出一些数字。我的直觉是可能,但这并不那么容易。如果有人能对此有所启发,我很想知道。
答案1
如果您没有,可以下载一个工具“pv”。
$ cat /dev/zero | pv > /media/your_usb/tmpfile
将为您提供通过 USB 控制器写入文件“tmpfile”的速度。
$ cat /media/your_usb/tmpfile | pv > /dev/null
将为您提供读取相同文件的速度。