基于Webrtc的多人视频会议的简单实现

时间:2024-03-31 08:11:14

通过重写WEBRTC传输模块来实现一个简单的视频会议,效果如下图:

基于Webrtc的多人视频会议的简单实现

说明:

1、画面1、2、3都是其他手机传过来的图像,局域网内有点点卡顿,同时软解3路数据你懂的。

2、声音比较清晰,服务端没有做混音处理。

 

实现原理:

1、服务端是小伙伴用C++配合实现的,主要作用就是信令控制与转发,所以原理没有太多好讲的。

2、因为有在WEBRTC里面注册自己的传输模块,所以在这个基础上实现多人就很容易了,主要就是让服务端转发的时候知道往哪里转发。

3、WEBRTC里面有channel机制,每个会话对应一个channel,如果要实现多个会话,就注册多个channel,关键代码如下:

基于Webrtc的多人视频会议的简单实现

下面是收到RTP包后通过channel找到对应的transport进行处理

基于Webrtc的多人视频会议的简单实现

 

总结:

1、通过上面这个demo可以做很多扩展,比如视频直播、在线教学、安防监控。

2、很多开源框架都是基于这种架构模式,如Licode,jitsi。

3、这种模式以后结合VP9,H265和SVC会有很好的发展空间,不过需要时间,所以我们会继续关注。

 

思考:

这种模式下怎么处理NACK和RTCP?

随着移动互联网和智能硬件的快速发展,音视频变得越来越重要,加上WEBRTC的出现,让开发这些高大上的功能变得越来越容易,

实际上是这样吗?让我们先来看看WEBRTC应用中的一些现象吧!

 

一、项目开始前都是这样的:

1、代码都开源了,找个开发人员2个月内将他集成进来,到时候就是中国特色的完全自主研发。

2、Google在搞的东西,不说效果比QQ和微信好多少,至少不会差到哪里去。

3、我们开发人员里面精通C++,安卓,iOS,Web前端的好几个,搞定这套东西还不是收到擒拿。

4、手机端不需要用Native开发,用WebView即可,这样可省下好多人力成本。

5、如果用这套东西做成视频会议或直播秀,是不是可以跟现有厂家有得一拼,我们有线下资源啊。

6、直接招个熟悉这个东西的人进来做这个项目算了,工资可以稍微高点。

7、等等等等。

 

二、开发过程中很多都是这样的:

1、到底从哪里入手呢?资料少不说,很多资料还是有问题的。

2、服务端客户端到底怎么搭建的,要不要编译整套代码呢?

3、下载和编译了2个星期了,还是啥都没搞定,郁闷。

4、怎么有时候没有视频,有时候没有声音,延迟怎么那么大呢?

5、搞了1个多月了,问题好多,没一点思路,不知道咋搞,放弃算了。

6、原定1个月集成进来的,现在都搞了快3个月了,还有好多没搞定。

7、东西是弄的差不多了,但是后续还是得有人来优化和维护,包括部分安卓机型的适配。

8、招聘了大半年,都没找到合适的人,在我们公司待遇不是问题,有合适的人就行。

9、webrtc没有支持多人视频,开源的用哪个好呢?或者有没有其他成熟第三方平台呢?

10、如果要支持全球部署,还得考虑服务端架设成本啊,这块费用也很高。

11、等等等等,不搞不知道,一搞下去问题好多。

...... ......

曾经或现在正在弄WEBRTC的朋友们,有没有同感?

其实上面这些现象我们都见过,只不过不同企业因为能力和实力不一样,所碰到的状况不一样,比如:

专业做音视频的可能对WEBRTC里面很多思想都清楚,甚至某些方面他们做得比WEBRTC更好,可能只需要应用里面的部分模块。大公司高手多,研究和突破起来速度比较快,比如华为,但是他们也会碰到很多问题。所以下面的这些建议要结合自己的实际: