通过重写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会有很好的发展空间,不过需要时间,所以我们会继续关注。
思考:
这种模式下怎么处理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更好,可能只需要应用里面的部分模块。大公司高手多,研究和突破起来速度比较快,比如华为,但是他们也会碰到很多问题。所以下面的这些建议要结合自己的实际: