点对点必然不是每次都能接通或者为了更好的音视频质量服务,甚至要支持群聊,这时就必须使用中转服务器。
开源的coTurn只支持点对点的中转,不支持群聊。
支持群聊开源的有:kurento、 licode、 janus。
群聊方案介绍
Mesh架构:终端之间互相连接,没有中心服务器,产生的问题,每个终端都要连接n-1个终端,每个终端的编码和网络压力都很大。群聊人数N不可能太大。
Router架构:终端之间引入中心服务器,学名MCU(Multi Point Control Unit),每个终端的视频流都发布到MCU服务器上,然后服务器负责编码发布多视频流的工作,减轻客户端的压力。
Mix架构:在Router架构基础上,多个视频流在服务器端被合为一个视频流,减轻网络压力。
Mesh架构其实就是每个客户端互相直接点对点通讯,每个客户端都需要发送n路音视频到n个客户端,对客户端压力非常大,支持人数肯定是很有限,而且不稳定。
Router架构即为中转服务器通常称为MCU服务器,客户端发送到服务器上,服务器再转发给同一个房间的用户。
Mix架构就是在 Router架构的基础上加上服务器混合音视频。在服务器收到多路客户端音视频数据后,进行混音和视频合成,在同一个房间的每个客户端只需要接收一路合成的音视频即可,这样网络流量肯定下降,但是实时编解码对于服务器cpu/gpu压力非常大。
kurento、 licode、 janus都是MCU服务器支持群聊,而且也包含Mix功能。
经过考察janus在github上star最多,所以下面会先研究janus。
具体的细节有空时再研究补充。