首页 文章

WebRTC如何处理多对多连接?

提问于
浏览
9

如果我和其他7个用户在一个房间,我想知道WebRTC是否强迫每个用户与其他每个参与者 Build 连接 .

显然它会消耗类似7kb / s * 7下载甚至上传的内容,如果连接已经很忙,很多连接都无法处理 . 相反,对于某种类型的媒体中继,带宽使用量仅为7kb / s,但您将失去对等体之间的带宽适应性 .

你知道任何媒体中继,或解决这个问题的方法吗?是适合这种工作的TURN服务器(如https://code.google.com/p/rfc5766-turn-server/)(包括多播)?

6 回答

  • 2

    如果问题仍然存在,这里有我的建议:基于您的SIP服务器安装RTP代理软件,例如,如果您使用的是kamailio,则将其与rtpengine结合使用 .

  • 6

    你是对的,对等体之间的带宽适应是一个问题 .

    TURN服务器无法解决此问题,因为它所做的只是提供稳定的 endpoints ,通常用于非常严格的NAT设置背后的人 .

    此问题的解决方案在于可伸缩视频编解码器 . 这些视频编解码器专为解决多路视频 Session 问题而设计 . H.264 / SVC是一种可扩展的编解码器,目前由谷歌环聊使用 . VP8还具有时间和空间可扩展性,并在WebRTC中使用 .

    可伸缩视频编解码器被设计成使得流的一部分(通常是单独的UDP分组)可以从流中移除,同时保留以较低质量解码视频的能力 . 至少使用三种类型的可伸缩性:

    • 时间,其中每秒帧数减少 .

    • 空间,其中像素数减少 .

    • 质量,减少颜色分辨率 .

    如果您实施视频 Session 服务器,则可以在比WebRTC级别更低的级别进入VP8流,对每个视频流进行必要的更改,并解决带宽适应问题 .

  • 0

    TURN服务器用作后备中继服务器,以便在由于防火墙或其他网络问题而无法直接进行对等连接时启用连接 . (更多信息here:按P表示演讲者备注 . )TURN服务器不适用于媒体分发 .

    Multipoint Control Unit可以解决您所引用的问题:这个here有一个示例拓扑 . 如该幻灯片的说明中所述:

    这是一个专门用于分发媒体的服务器,可以处理大量参与者;它还可以执行智能操作,例如选择性流转发,混合音频或视频或录制 .

  • 0

    有关WebRTC用例的详细信息,请查看http://tools.ietf.org/html/draft-ietf-rtcweb-use-cases-and-requirements-06 . 作者提到了一种使用中央服务器的多用户 Session 解决方案 . 因此,使用WebRTC Build 多用户A / V Session 的最佳解决方案是拥有这样一个中央服务器,可以对所有对等体进行音频混合和A / V "broadcasting" .

    这可以避免您在问题中提到的带宽问题 . 目前,一大批初创公司和成熟的服务提供商正在开发基于WebRTC的 Session 解决方案,只需让您喜爱的网络搜索引擎选择一些示例 .

    单独使用TURN服务器是不够的,因为TURN仅用于中继无法直接访问的主机的数据(可能是因为防火墙) . TURN服务器不会终止WebRTC连接 .

  • 2

    TURN服务器仅辅助防火墙遍历和通过NAT . 对于真正的 Session ,您需要 Cloud 中的中央MCU类型的服务器,否则 Session 不会随着您不断添加用户而扩展 . WebRTC有一些 Session 服务器,例如https://vline.com/http://ngmsvid.com

  • 2

    是的,您必须与每个同行 Build 单独的连接 . 为了解决这个问题,您可以使用像kurento这样的媒体服务器 .

    使用媒体服务器,每个对等体都将连接到媒体服务器,然后服务器将来自对等体的视频流并排放入一个,然后将新流发送给您 . 这为同行节省了必须从每个其他对等端下载流的麻烦 .

相关问题