我正在设计一个解决方案,允许连接到Raspberry Pi的网络摄像头的视频流式传输到AWS中的服务器,然后重新流式传输到访问AWS服务器上的网站的浏览器。许多Pis将参与其中,用户可以根据需要触发和访问来自他们自己Pi的Feed。
对我来说,这是一个陌生的领域,所以我真的不知道从哪里开始,我正在寻找有关最佳建筑的建议。
到目前为止,我正在考虑在每个Pi上创建一个进程(理想情况下是python),它将打开与服务器的Web套接字连接。服务器将根据与其相关的用户帐户跟踪每个套接字。然后,用户将连接到服务器,通过Web套接字触发信号以打开他们自己的Pi视频源,并将视频源发送到我的服务器。他们的想法是,他们应该通过我网站上的URL看到视频源,而不是通过Pi上的URL - 这将解决任何NAT访问问题。
如何将每个Pi网络摄像头的视频输入发送到服务器,以便实时馈送来自服务器本身?
基本上与请求here的请求没有得到答案相同。
答案 0 :(得分:1)
跳过在服务器中流式传输的部分,然后使用WebRTC。
它是点对点,在浏览器中工作,具有自动编解码器协商,NAT遍历,您需要的一切。然后,您需要托管的只是信令服务器和TURN服务器,以便在两个对等设备都被防火墙时使用。
答案 1 :(得分:1)
出于您的目的,评论中提到的最简单,最强大的工具是 UV4L 。除了原生的p2p功能外,我还会考虑将其用于互连许多同行:https://www.linux-projects.org/rpi-videoconference-demo-os/。
这本质上是Raspberry Pi的即用型操作系统映像,在启动时提供音频/视频会议室(感谢Janus SFU)许多Raspberry Pi(包括运行OS)具有相机,麦克风,显示器和扬声器或PC,智能电话等可以发布/订阅他们/其他的音频或视频流。运行操作系统的Raspberry Pi最终可以决定连接到互联网上的任何视频室,就像上面的链接一样,不只是" local"一。 Rpi端不需要浏览器,因为UV4L直接使用所有硬件并且对WebRTC具有本机支持(它甚至支持H264硬件编码/解码)。 Janus Gateway和UV4L都可以使用任何给定的STUN / TURN服务器列表进行设置,并且也已成功用于AWS实例。
UV4L中有一个内置网页,只需点击几下鼠标即可实现上述所有功能。但是,使用 UV4L RESTFul API (并在测试此API的面板的帮助下),您可以为特定目的编写/自定义您自己的Web应用程序(例如,创建一个受密码保护的私人空间,给定数量的发布者或订阅者符合您案例中的要求)