WebRTC如何处理多对多连接?

14

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

显然,它将消耗大约7kb / s * 7的下载和上传速度,许多连接如果它们的连接已经忙碌,则无法处理此问题。 相反,通过某种类型的媒体中继,带宽使用将仅为7kb / s,但您将失去对点对点之间带宽适应的控制。

您是否知道任何媒体中继或解决此问题的方法?像TURN服务器(例如https://code.google.com/p/rfc5766-turn-server/)是否适用于这种工作(包括多播)?


这里有一个类似的线程在SO上:http://stackoverflow.com/questions/16438933/how-to-build-a-network-using-peer-connections-of-multiple-peers - kongaraju
5个回答

8
一个TURN服务器作为后备中继服务器工作,以便在直接点对点连接由于防火墙或其他网络问题而不可能时,实现连通性。(更多信息在这里:按P键查看演讲者备注。)TURN服务器不适用于媒体分发。 多点控制单元可以解决您所提到的问题: 这里有一个示例拓扑结构。正如该幻灯片的备注中所述:

这是一个专门用于媒体分发的服务器,可以处理大量参与者; 它还可以做一些聪明的事情,比如选择性流转发,音频或视频混合或录制。


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

这避免了您在问题中提到的带宽问题。目前,许多新创企业和已建立的服务提供商正在开发基于WebRTC的会议解决方案,请让您喜欢的网络搜索引擎挑选一些示例。

仅使用TURN服务器不足,因为TURN仅用于中继无法直接到达的主机的数据(可能由于防火墙)。TURN服务器不终止WebRTC连接。


3

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

通过媒体服务器,每个同行都会连接到媒体服务器,然后服务器会将同行的视频流组合在一起,放置在一起,然后将新的流发送给您。这样可以避免同行不必从其他同行下载流的麻烦。


0

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


0

你说得对,点对点之间的带宽适应确实是个问题。

TURN服务器并不能解决这个问题,因为它只提供一个稳定的端点,通常用于那些受到严格NAT限制的用户。

解决这个问题的方法在于可扩展视频编解码器。这些视频编解码器专门设计用来解决多方视频会议问题。H.264/SVC就是一种可扩展编解码器,目前被Google+ Hangouts所使用。VP8也具有时间和空间可扩展性,并被WebRTC所使用。

可扩展视频编解码器的设计使得流中的部分内容(通常是单个UDP数据包)可以被移除而不影响以较低质量解码视频。至少有三种类型的可扩展性被使用:

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

如果你实现了一个视频会议服务器,你可以在WebRTC级别以下进入VP8流,对每个视频流进行必要的更改,从而解决带宽适应问题。


无法在WebRTC浏览器中使用VP8可扩展性支持(现有API无法访问)。Hangouts使用simulcast(在现有API中受支持)发送具有不同质量的多个版本的流,以便服务器(转发单元)能够选择要发送到每个目标的哪个版本。 - ggarber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接