使用 Raspberry Pi 作为网络摄像头的 I/O

使用 Raspberry Pi 作为网络摄像头的 I/O

我正在开展一个项目,其中 Raspberry Pi 被用作多个伺服器的 I/O 板,这些伺服器实际上由另一台计算机控制,并通过以太网连接到 RPi。

我需要在项目中添加 2 个 USB 网络摄像头,并希望将它们连接到 RPi,以维护 I/O 的单一位置(如果有意义的话)。

我正在寻找最简单、延迟最低的方法来将网络摄像头的输入转发到主机。我尝试使用 Usbip 和 ffmpeg 来传输数据,但这两种方法都遇到了问题。还有其他建议吗?或者我应该继续尝试我尝试过的方法之一。

谢谢!

答案1

您的网络摄像头有硬件压缩功能吗?或者您在 RPi 上进行压缩?它的 VideoCore 处理器适合这种类型的工作,但是……您必须使用 OpenMAX 来卸载到 VideoCore,因为 Linux 运行的 ARM 协处理器甚至无法压缩低清晰度流。加载 VideoCore 编解码器的程序是omxplayer一些gstreamer插件。

即使使用 VideoCore,通过 USB 内部互连获取原始视频数据时也会遇到带宽问题。

因此,您的可行选择是

  1. 将预压缩的(网络摄像头内部)视频从 USB 复制到以太网。
  2. 使用连接到 Raspberry Pi 上的高带宽视频端口的 RPi 摄像头模块,直接进入 VideoCore 进行处理和压缩。

后一种选择可能会降低很多延迟,但只能获得一个流。理论上可以通过单个视频端口交错两个流,但 VideoCore 上的编解码器需要设计为接受和分离两个流,并且这样做的技术数据仅在签署保密协议的情况下提供给 Broadcom 最大的客户。

您可以在 Rasberry Pi 论坛上找到有关视频编解码器开发过程的更多信息。简而言之:Broadcom 完成了大部分工作,Raspberry Pi 基金会可以访问技术数据,但没有足够的工程师,而且 NDA 禁止他们将工作外包。

相关内容