本文主要介绍基于Webrtc的多人视频会议的简单实现,文章来自博客园RTC.Blacker,支持原创,转载请说明出处。
前面提到基于开源框架的视频会议都存在诸多问题,所以我们通过重写WEBRTC传输模块来实现一个简单的视频会议,效果如下图:
说明:
1、画面1、2、3都是其他手机传过来的图像,局域网内有点点卡顿,同时软解3路数据你懂的。
2、声音比较清晰,服务端没有做混音处理。
实现原理:
1、服务端是小伙伴用C++配合实现的,主要作用就是信令控制与转发,所以原理没有太多好讲的。
2、因为有在WEBRTC里面注册自己的传输模块,所以在这个基础上实现多人就很容易了,主要就是让服务端转发的时候知道往哪里转发。
3、WEBRTC里面有channel机制,每个会话对应一个channel,如果要实现多个会话,就注册多个channel,关键代码如下:
下面是收到RTP包后通过channel找到对应的transport进行处理
总结:
1、通过上面这个demo可以做很多扩展,比如视频直播、在线教学、安防监控。
2、很多开源框架都是基于这种架构模式,如Licode,jitsi。
3、这种模式以后结合VP9,H265和SVC会有很好的发展空间,不过需要时间,所以我们会继续关注。
思考:
1、这种服务端是我之前说的哪种架构模式?
2、这种模式下怎么处理NACK和RTCP?
欢迎继续关注我的博客,欢迎发邮件交流或回帖探讨~