【发布时间】:2013-08-21 13:20:21
【问题描述】:
问题:
WebRTC 为我们提供点对点视频/音频连接。它非常适合 p2p 通话、视频群聊。但是广播(一对多,例如,1 到 10000)呢?
假设我们有一个广播员“B”和两个与会者“A1”、“A2”。当然,这似乎是可以解决的:我们只需将 B 与 A1 连接,然后将 B 与 A2 连接。因此 B 将视频/音频流直接发送到 A1,将另一个流发送到 A2。 B 发送两次流。
现在让我们假设有 10000 名与会者:A1、A2、...、A10000。这意味着 B 必须发送 10000 个流。每个流约为 40KB/s,这意味着 B 需要 400MB/s 的传出互联网速度来维持此广播。不可接受。
原始问题(已过时)
是否有可能以某种方式解决这个问题,所以 B 在某些服务器上只发送一个流,而与会者只是从该服务器中提取这个流?是的,这意味着这台服务器上的传出速度必须很高,但我可以保持它。
或者这意味着破坏 WebRTC 的想法?
注意事项
根据终端客户糟糕的用户体验,Flash 无法满足我的需求。
解决方案(不是真的)
26.05.2015 - 目前没有这样的 WebRTC 可扩展广播解决方案,您根本不使用媒体服务器。市场上有服务器端解决方案以及混合(p2p + 服务器端,具体取决于不同的条件)。
虽然有一些很有前途的技术,例如 https://github.com/muaz-khan/WebRTC-Scalable-Broadcast,但他们需要回答这些可能的问题:延迟、整体网络连接稳定性、可扩展性公式(它们可能不是无限可扩展的)。
建议
- 通过调整音频和视频编解码器来减少 CPU/带宽;
- 获取媒体服务器。
【问题讨论】:
-
“构建可扩展应用程序的唯一方法是使用服务器端解决方案。”这似乎很清楚...... 至于 WebRTC,它从未打算用于大规模广播。为此使用支持多播的东西,或者如果您必须通过 Internet,则使用基于服务器的一对一连接,因为 ISP 不路由多播。
-
为什么不使用 WebRTC 从客户端到服务器?问题在于分发,因为客户端的连接无法处理它,因此向服务器发送一个蒸汽并从那里流向客户端。带宽会很昂贵,但您无法绕过向每个用户发送单个流或让用户向其他用户发送流。
-
据我所知,至少有两家公司正在尝试基于 webrtc 的 p2p 视频交付:affovi.com/rtcplayer.html - 主要用于实时视频;和 peer5.com - 主要用于 VOD。
-
@igorpavlov 你可能想检查一下:github.com/muaz-khan/WebRTC-Scalable-Broadcast 虽然它只适用于 chrome,还没有音频广播。
-
如果没有某种 MCU,就无法实现这种可扩展性。 WebRTC 被设计为点对点。如果不绝对抨击您的广播公司,您就无法从它进行广播(每个流都有一个唯一的对等连接,实习生是另一个正在编码的流)。至于从点对点中继媒体,这可能是可能的,但是当然,这会为以后添加到流中的每个对等点带来额外的延迟。对于质量和可扩展性,拥有 webrtc MCU 服务器是唯一现实的解决方案。
标签: javascript video webrtc scalability broadcast