WebRTC媒体服务器:管理长期对等连接



我从WebRTC开始,这在很大程度上是一个设计问题。寻找两种相互竞争的方法的利弊。

上下文

我正在创建一个媒体服务器,将视频流式传输到多个客户端。每个客户端都可以请求在浏览器页面中查看一个或多个视频流,然后关闭这些视频流并请求其他视频流,依此类推。单个客户端可能一次持续连接数小时或数天,可以随意切换不同的视频流。

问题

如何管理与客户端的对等连接?

考虑的方法

  1. 每个(客户端、视频流(对都有自己的对等连接。因此,如果客户端正在观看5个视频流,则该网页将具有5个对等连接。每个对等连接都有一个单独的轨道。这涉及到每次客户端采取查看/关闭视频流的操作时创建/破坏对等连接
  2. 每个(客户端(都有一个对等连接。根据客户端操作,我们可以在对等连接中添加轨迹或删除轨迹。只要客户端在我们的网页上,单一连接就会一直存在

从表面上看,选项2似乎不那么"合适";浪费的";因为只有一个连接,但阅读WebRTC信号,添加/删除曲目的行为会触发新一轮的报价/应答,所以我不确定它是否真的更有效。此外,它似乎更难管理和实施,因为它更具状态,例如,确保轨道在不再使用时得到正确清理。

谢谢。

选项2当然更有效,因为它避免了为每个流进行ICE协商。它还避免了浪费UDP端口,如果您的服务器非常繁忙,这可能很重要。(它还限制了NAT框中的状态数量,这在现在可能不再是一个问题。(

然而,选项1可能更具性能,因为对每个媒体流使用不同的传输流(不同的UDP端口(意味着流量整形器和AQM将区分不同的流,并可能为您的应用程序提供更多吞吐量。

也许更重要的是,备选方案1的实施要简单得多。在重新协商对等连接时,有一些复杂的规则,这些规则很容易被破坏,导致难以调试的故障。

最新更新