WebRTC如何处理多对多连接?

时间:2013-06-16 15:21:58

标签: javascript webrtc voip stun

如果我和其他7位用户在一个房间里,我想知道WebRTC是否强迫每个用户与其他每个用户建立连接。

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

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

6 个答案:

答案 0 :(得分:6)

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

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

  

这是专门用于分发媒体的服务器,   并且可以处理大量参与者;它也可以做到聪明   选择性流转发,混合音频或视频,   或录音。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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

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

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

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

  • 时间,每秒帧数减少。
  • 空间,减少像素数。
  • 质量,颜色分辨率降低。

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

答案 5 :(得分:0)

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

相关问题