叮叮开课
dingkaike.com

网络课堂系统如何解决声画不同步、卡顿、延迟?

发表时间:2019-12-27 16:58作者:叮叮开课

网络课堂系统

教学系统中最重要的是直播系统,直播系统的流畅度直接影响教学质量,影响了学生和老师之间的沟通,现如今各大在线教育平台都有自己的网络课堂系统,而流畅和延时性等性能问题也大大提高。那么,我们了解一下网络课堂系统为什么会有直播卡顿甚至播放延时较长的现象呢?

造成网络课堂系统直播卡顿的原因主要分为3方面:

设备方面,考虑硬件主播端/播放硬件配置太低,软件方面,移动端播放器软件处理问题,PC端FlashPler 版本太低

视频流方面,音频时间戳不能同步,视频流参数配置问题

网络方面,上传网络的时候主播端性能差,导致视频帧率过低,主播端信号差。下载网络方面,播放端信号较差。服务器方面,服务器信号传输问题,传输压力过大。

关于这方面解决叮叮开课有自己的一套解决办法:

一、音视频传输方面

音视频传输方面,叮叮开课核心是用的UDP,自己设计了一套基于UDP的低延迟解决方案,大概延时在两百毫秒以内,一来一回两百毫秒以内。音频抗丢包,大概在30到50,视频丢包在10%到20%是看不出来的。信令是控制一些命令,比如说让谁上台发言,让谁下线,把谁踢出去,还包括文档翻页、画笔同步。文档是传PPT实现,实际上是要把文档转成别的格式才能同步分享,否则一个正常PPT是分享不出去的。录制点播就比较简单了。

二、协议与开发语言

网络课堂系统开发时的协议要选对。如果用TCP玩音视频,就肯定会卡的,所以要用UDP。如果是单向直播,用TCP也好,其实是无所谓的。想低延迟和稳定传输的话,建议还是用UDP。语言,要选一个比较好的语言,性能比较高。比如多线程,包括大并发上来能抗的住,一百个并发和一万个并发,服务器的表现是完全不一样的。

网络传输我们用了三种协议,UDP+RTMP+HLS,所有的上传都是用UDP。在服务器把H.264和ACC转成RTMP和HLS,就可以透过网页上去看,并可以把它录制下来。

视频的编码器,H.264和H.265我们都支持,我们还做了一个硬件,一个小盒子,专门把编码器独立出来,因为我们发现一个问题,现在普通的PC编个1080P高清的视频,特别是现在教育做得比较火的这种双视直播,他们实现的大部分方案是拿思科的视频会议方案去搭的,成本比较高,如果是使用一个小盒子,相当于一个外置编码器一样,它能够编H.264、H.265的高清。

我们的音频编码是用的OPUS+AAC,实际上核心是用的OPUS,因为网页里是不支持OPUS的,我们在Server端做了一下转化,就把OPUS转成AAC了,整个这么搭起来的,这么搭起来以后,你可以说去做多人连麦,包括网页直播,各方面的都可以支持了。

语言方面我们是C++和GO混合来开发的,整个音视频的处理是C++,GO负责一些业务逻辑,包括集群、调度。最核心的音视频模块,是用C++去写的。用GO开发的好处是效率比较高,并且多线程比较好用,第三出了问题比较好找。我们第一个版本是用C++写的,但是多线程的实现,没有个十几年功底的C++工程师是Hold不住的,经常崩溃

三、调度和网络

这也是一个很头疼的话题,原来我们想当然做了一个简单的测速,发了几个包出去,谁给我回的快,就连谁。实际上不是这样,现在你的包回来的快,不代表你的丢包率比较低,在实际的连接成功之后的表现是不一样的。其次,运营商的选择。

因为存在很多中美之间的教学,跨国的连接也是比较复杂的,怎么去调度?我们现在是测速和调度是合起来,比如判断你是电信的运营商,我给你返回一组,基于地域能覆盖的一组服务器,再进行测速,测速最关键的一点是丢包,音视频的卡顿,延时稍微大一点是没有关系的,只要包不丢,就不用去补,听起来就比较好了。

另外,每一次我们测速的时候,都把数据给收集上来了,后面就做了个算法,不断的去优化,包括中间我们也会收集一些数据,看在这个地域下的这个用户连上这个服务器,它的性能怎么样,不断去优化这个调度策略。我们遇到一个小运营商的问题,同行也都遇到了,像长城宽带、电力猫这种网络也不知道什么情况,是从哪拉来的。小运营商的出口就很小,我们在上课的时候,基本上是晚高峰,卡顿率就特别高,这是比较头疼的。

总结下来的策略包括

第一,运营商。让电信连联通的话,肯定效果好不了,你得把它弄到一个运营商里去。

第二,地域。说实话,不是一个决定性的维度。

第三,服务器负载。因为我们做音视频不可能是一台服务器干活,有好多台服务器,当用户上来以后,把它分配到哪一个服务器上去,是需要看服务器的负载的,CPU、内存、网络如果是已经满负荷了,继续分配过去,肯定也会卡。

第四,测速。我们发现把测速做好了优化,还是能解决很大的问题的,我们实际测一下,你今天连着这个服务器好,明天他连就不一定好,互联网这个网络老是变化的。

以上就是网络课堂系统中出现的身画不同步、延迟、卡顿等问题的解决方式。

产品咨询加微信:
130-2888-6431

工作时间:09 : 30~12 :00   14 : 00~20 :00
地址:广东省深圳市南山区南海大道花园城数码大厦A座201
叮叮开课公众号
扫码免费开课