【问题标题】:How do IP camera stream video across home networkIP 摄像机如何通过家庭网络传输视频
【发布时间】:2018-06-30 17:38:19
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这里的答案很大程度上取决于您的具体需求,而您没有告诉我们。一次会有多少观众?质量和延迟要求是什么?有音频吗?需要什么客户端兼容性?如果您只是在制作一个 DIY 无线门铃,那么带有最小信令服务器的 WebRTC P2P 就可以了。如果您正在流式传输奥运会,您将需要与 CDN 交互,以及其他 1,000 个问题。
  • 它永远不会同时超过 2-3 人。此外,平均质量和 2-3 秒的延迟是可以的。它的DIY项目
  • 还有,所有其他问题的答案?还是我应该假设您需要什么?
  • 好的,没有音频。客户端兼容性 - 如果可能,应该在浏览器上流式传输
  • @brad,我需要了解现成的 IP 摄像机公司是做什么的,所以这并不是我真正需要的,主要是他们是如何做到的。我确信我在 cmets 中指定的内容与这些 IP 摄像头公司假设的假设非常接近

标签: ffmpeg video-streaming streaming


【解决方案1】:

使用 WebRTC,原因如下:

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

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

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

【讨论】:

  • 好的。一个人将如何实现它?有链接吗?
  • Gstreamer 对此很有用。对于基于 Web 的客户端,请查看 MDN 上的所有内容。 developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols
  • “所以你不应该遇到这样的情况,即至少没有某些编解码器的配置文件可以工作”——不幸的是,这仅在理论上是正确的。 Apple 选择忽略 VP8 编解码器是强制实施的。因此,h264 问题适用。
  • @PhilippHancke 公平地说,当设备没有支持的 H.264 芯片时,Google 也会忽略 Android 上强制实施的 H.264 编解码器:)
  • @PhilippHancke 当然,实际上总是有可用的 H.264 实现,即使它是一些糟糕的基线配置文件。我从未见过没有 H.264 硬件编解码器的 Android 设备。毫无疑问,您可以在某个地方找到我,但是在您不必担心使用这种设备的约 5 个人之前,您会遇到很多其他兼容性问题。无论如何,当然我们仍然需要一个兼容的编解码器来发送视频......如果可以选择的话,我宁愿把它留给 WebRTC 堆栈来协商它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多