IP摄像机如何通过家庭网络流式传输视频



我的问题是IP摄像机如何将数据从家庭网络流式传输到公共网络。以下是我认为可以做到的方法:

  1. 如果我使用树莓派相机模块设置这样的东西。我可能会在我的接入点/Wifi路由器上使用端口转发。但是,显然,这不是一个可扩展的解决方案,并且必须有其他现成的IP摄像机必须做的事情。

  2. 一种选择是将视频(使用 ffmpeg)流式传输到删除服务器,然后该远程服务器可能会再次"重新流式传输"该服务器? -如果确实如此,如何完成?

我非常了解后端架构,并且曾经开发过相当复杂的架构,所以我确实想要一个相当技术性的答案。

使用WebRTC,原因如下:

  • 对点连接。避免仅仅为了中继给几个人而为流媒体服务器付费,如果源可以自己完成的话。
  • NAT 遍历。在大多数情况下(~87% 的时间),UPnP 可能会打一个洞,或者其中一个对等体没有防火墙。 因此,可以直接连接。 如果不能,TURN服务器可以在对等方之间代理数据。 所有这些连接协商都是ICE的一部分,由WebRTC客户端为您处理。
  • 编解码器协商。无需担心哪个客户端支持什么。 WebRTC堆栈为您协商所有这些,并且还规定了所有WebRTC客户端支持的一些常见编解码器。因此,您永远不应该遇到至少某些编解码器的某些配置文件可以工作的情况。
  • 低延迟。WebRTC是为视频会议而设计的,因此优先考虑延迟而不是质量和一般可靠性。 也就是说,如果您失去连接,它将在当前时间立即恢复,而不是尝试返回并找出 10 秒前发生的事情。 对于您的延迟目标,这是一件好事。
  • 浏览器支持。WebRTC有广泛的浏览器支持,所有主流浏览器以及许多其他应用程序库都支持它。

所有优秀的消费类IP摄像机都支持WebRTC。 从基础设施的角度来看,他们需要做的就是托管一个信令服务器(最初允许对等方通信和协商自己的连接),以及一个用于无法直接通信的对等方的 TURN 服务器。 这是相当便宜的。 信令服务器几乎不占用负载和带宽。 在大多数情况下,不需要 TURN 服务器。 此外,还有许多提供商提供现成的WebRTC堆栈,并配有客户端库。

某些 IP 摄像机不这样做。 有些让用户弄清楚IP地址是什么,在他们的浏览器或媒体播放器中打孔,然后流式传输MJPEG和类似内容。

最新更新