人生苦短
一起搞机
justhost
aws
dotdot
recloud
spinservers

UCloud裴志伟:RTC实时音视频互动背后有哪些关键技术?

racknerd
UCloud实时音视频负责人裴志伟

近日,雷锋网开启了“教育新基建”系列公开课第二期,邀请了国内云计算第一股UCloud优刻得实时音视频平台负责人裴志伟做客线上课堂,他以《线下教育如何平稳地过渡到线上》为题进行分享。

裴志伟,UCloud实时通信平台负责人。主要负责实时音视频RTC产品研发,拥有近10年互联网行业的研发经验。2015年初加入UCloud,分别负责过云主机、云网关、带宽和UFile对象存储等产品,覆盖云计算的计算、网络、存储是三大领域,对云计算行业有丰富的经验。

此次主题分享分为四个部分:

1. 疫情对于在线教育的短期和长期影响

2. 在线课堂遇到的技术挑战

3. 实时高清音视频通话背后的关键技术解析

4. 案例解析:如何快速构建高质量的在线课堂

以下为裴志伟的课程分享的部分回顾,雷锋网对其做了不改变原意的编辑整理:

大家好,我来自UCloud,然后现在是UCloud实时音视频平台负责人,我今天的话题是关于大规模的实时视频互动场景下面带来什么样的挑战,以及有哪些关键的技术点?

首先我们先看看疫情对泛直播,包括一些用点播录播的方式来做的微直播,带来的短期变化是怎样的?那就是学习、生产、经营都要去寻找一个线上的替代方式。

1 疫情期间线上课程为何体验不佳?

疫情期间线上课程为什么会体验不佳呢?我们上半年也听到过很多吐槽的声音,大家都是在吐槽体验不好,有卡顿、掉线,有各种各样的问题。

疫情期间线上课程为何体验不佳

这里面其实分为三个层面,第一个是缺少一个良好的产品设计,因为我们大家知道我们平时用的产品都是有产品的迭代,收集需求并去打磨,但是疫情突发而至的时候,实际上是很难有个很快应对或者是去了解需求的过程。甚至某种程度上大家都是拼凑式用的,就是并没有人单独为我需要的一个场景去设计产品,所以第一个核心是缺少一个良好的产品的设计或者迭代。

那么第二点,其实是它的技术。

2004年为什么发生了一个很大的变化,在2004年的时候,互联网的远程办公的底层技术成熟了。技术和需求是共同组织发展的,所以在2004年之后,在美国work from home的人的比例在逐渐提升,而且我相信这次疫情之后,2020年又是个大的转折,那个曲线会更加陡。

其实社会一直有这样的需求,但是过去可能没有这样的技术产品,需求就被压抑了。

我们来看疫情带来的长期影响,要看两个方面,第一是社会需求,第二是技术底层技术的支撑能力。技术是否能够匹配支撑这个需求?

现在我们大家经常看到的是比如说教育的场景在做分级,医院也在做分级诊疗,缓解看病难等,未来还会出现在远程办公中。

实时音视频技术产品分级

实时音视频技术会随着需求不断去完善自己,推动生态的建设,比如说硬件芯片的升级、操作系统的适配、浏览器的适配,还有各种各样的生态,比如微信。

还有就是5G的到来,实时音视频是一个很大的爆点。大家都知道5G的优势,如带宽很大,延迟很低,支持更多各种多样的设备去连接进入网络。所以,实时音视频可以更好地发挥5G的优势,它可以去更好地利用低延迟、大带宽去提供比如VR全息投影的方式等等,会产生蝴蝶效应。

音视频需求的蝴蝶效应

2 系统架构设计的四个关键点:高并发、高可靠、低延迟、抗弱网

有了这样的技术之后,还要再看产品设计。我们在互联网领域一直非常强调产品设计,系统架构设计要以用户体验为导向,我们最终是为了让用户有一个良好的体验,而不是我自己做技术做得爽。

如何根据用户体验设计系统

用户的核心诉求其实就是不卡、不掉、延迟要尽可能低,低到什么程度呢?我们在网络的两端去做线上的一些生产经营活动的时候,要尽可能模拟到感觉跟线下似的。什么叫跟线下似的?两个人面对面的在交流的时候,实际上没有延迟的,我说话声音的传播速度很快,我立刻就能看到对方的反应,对方的表情,对方会立刻给我反馈。但如果我们延迟大于一秒,甚至很多传统的语音通话延迟都在5秒以上,这几乎是不可接受的。

用户还有什么衍生需求?音质要足够好、信息要做降噪。如果你我的周围有风的声音,或者是有一些电流声、按键声,其实这种确定性的声音还是可以去做降噪的,但比如说如果我走在户外,突然有一辆车鸣笛经过,现在的技术还是很难做到过滤掉这些噪声。

最后一个很大的方面,把线下的场景完全搬到线上会有很多迭代的需求。比如说在线下可以使用一个黑板就可以做到直接去演示一个东西,当然现在可以通过屏幕分享,通过传文件的方式等来实现。

结合这些需求来看,系统架构设计核心最核心的就是四点,高并发、高可靠、低延迟和抗弱网,你要把它当做一个平台去设计,对接各种各样的算法。如果你全自己做的话,这个系统是非常大非常复杂的,所以音视频产品一定是平台化、模块化的。

3 实时高清音视频通话背后的关键技术

实时音视频整体架构图

这是我们自己产品的一个整体架构图。

从下往上,第一部分是有个接入模块,第二部分是有个信令模块,第三部分是有个媒体模块,把这三个东西打包成一个PaaS,PaaS的解决方案是以SDK的形式,它提供给用户可以去调SDK的接口,用户可以在不需要对音视频设备有太多理解的情况下,就能把自己产品这块的能力补齐。

大家可以看到这里面会用到会有非常多的网络协议,比如说websocket协议、SRTP协议、RTP、HTTPS等等,其实它很复杂,就像类似于通讯里面会有有控制面、数据传输面等等。

上面就是我们常见的一些互联网的技术架构了,首先你要有API网关去对接,去接受资源上的控制。中间要做交易队列,数据管理中心、媒体处理中心、注册中心和调度中心等等。基础服务主要是对这些资源,还有实现周边的访问控制系统,然后server实现控制和传输的中继。

接下来这个技术在整个直播和视频领域里面最核心的一个模块叫做抖动缓冲。这个模块是干嘛的呢?我们看下面的这张图,它实际上是音视频整个全部的过程。

音视频技术抖动缓冲区

从端上的采集到编码,包括中间还有预处理,把它去做封包,然后进入网络去发送。到对单的时候要经过接收和组帧,然后要过这个Jitter Buffer,就叫做抖动缓冲区。

所以抖动缓冲区的核心模块其实就是处理,因为我们走在互联网的数据包,会遇到比如丢包、乱序、延迟到达等复杂的场景,那么这时候就要去做一个很核心的功能,我要尽量平缓地就像解码模块去输出一个数据包帧,所以它其实是抗弱网的一个核心模块。

其实我们都知道网络具有不稳定性,如果大家关注过互联网的数据包延迟的话,你会看到它其实是一个曲线,或者至少是一个锯齿状态,它是一直在波动的,偶尔就会有突发的一个抖动,或者是一个数据包的被丢失,甚至可能是因为端上的性能不足等会引发一些执行视频相对比较复杂的地方,既然它比一般的直播延迟要更短,比如说我们一般定义是要100-200毫秒,那么在这么很短的情况下,如果网络出现一个波动,它会导致短期的延迟都大于200毫秒了。

如何去设计你的缓冲区?比如直播,m318可以有9秒,我可以有三个分片,加起来6秒到9秒,甚至还有更夸张的有12秒缓冲区的设计。那么在实时音视频的情况下是没有的,他没有这么大的一个缓冲区,怎么办呢?所以它实际上也是一些预测算法,核心的上网叫做卡尔曼滤波,通过一些算法去估算当前网络排队的延迟情况,还有现在传输的信道的整体传输速率。

当然现在也有很多人把这个模块辅助加一些预测,训练出一些模型去简单做一些预测,所以它主要是根据这几个参数,比如抖动延迟的观测值、前后两帧的大小的差值,还有当前网络噪声和系统的误差等参数去计算出来一个卡尔曼增益系数,去调整Jitter Buffer的大小。比如说如果发现数据不够了,他可能会把一部分的数据去做拉长,这时候你就会听到像类似于电音这样的一些真实的效果。

第二块叫补偿算法。

在WiFi的标准里面,一个叫后项,一个叫形象补偿算法,我们其实一般都是用的后项,在WiFi里面主要用前项,在其他领域一般用后项。

ARQ就是快速重传,NACK也是快速送出来这种算法的一个动态的智能联动。算法会根据不同的网络情况,比如说你当前是丢包比较多,还是延迟比较高,会根据一些具体的情况去动态切换。

所有的切换其实就是要去调整一个东西,重传包和冗余包的比例。

重传包很好理解,就是一个数据包丢失了,需要立刻重传一次,公网的RTT延迟在中国大陆的话一般平均在70毫秒,这样的策略能控制整个音视频延迟在400毫秒以内。

音视频技术补偿算法

那么另外一种方式是通过冗余比例。人耳其实对音频更敏感,比如说像直播的时候一般是相对静态的画面,其实视频还好,因为你丢了一两帧,只是在网络非常卡的时候,可能看到人有点跳跃式的动作,不是那么连贯,但是影响不是那么大。

反而是音频识别比较难,因为人耳相比于人眼本来就更敏感,如果音频不连续,你听起来会很奇怪,你听到的表意是不完全的。人对听到的声音的理解其实是一个比较复杂的过程,你要先听到每一句每个字,然后再把它组成词,组成句,还有上下文的语境,那么这个过程其实相对比较复杂。

所以其实音频更多的就是靠的是整个软件的数据比例,比如说我们常见的至少是两倍甚至还有三倍的,通过调整冗余包的比例,即使数据包丢失也不用担心。

还有更高级的算法比如可以做低频的数据和高频的数据,把它去做拆分,如果你收到完整的数据,你听到音频的质量会更高,如果你只收到了低频的部分,你听到的这个声音就稍微有点失真。

所以其实都是通过各种各样的补偿方法,在网络相对比较差的情况下保证实时音视频或者一个会议场景的效果。

下面这张图解释了为什么我们叫他把它叫做实时音视频平台,而不只是一个简单的产品。 

音视频整体功能图

上行的一条线是采集、音视频预处理、编码、网络传输、云服务端,有些还会有两大分支处,一个是做录制,第二个是旁路推流,旁路推流就是比如我们几个人开会,还可以把这个会议直播出去给更多的人观看。

另外一条下行的是网络传输、解码、后处理,比如说美颜、加水印等。

实际上每个步骤在每个真实的用户场景里面都会有各种各样的功能。我就举个最简单例子,比如音频采集,是不是设置麦克风,有一些专业的麦克风、有混响,或者说他用了一些美颜相机;比如我在电脑上播放了一段音乐,我想要去采集应用播放出来的音乐声,还有比如有些老师唱歌,用了一些声卡,或者是我之前本地有一个音频文件,想把音频文件做成混音的效果……

视频采集就更复杂了,比如手机有前置后置摄像头,后置摄像头还分为长焦远焦;还有我们做桌面分享的时候,可能需要我做整个屏幕的或者是某个窗口某个区域的某个应用的分享;还有更专业的直播间需要去对接追踪人脸的360°的网络摄像头。

所以一个标准的平台产品,你要把它的底层设计做得足够通用其实很复杂,这也就是为什么很难有一款SaaS产品能够去很好地满足各行各业的应用场景。我们只能是在PasS的基础上搭建一个平台,在这个平台的基础上,对每个模块去做你熟悉的产品和场景,你了解它的功能,并了解底层提供的支撑一些功能的能力,这时候你去设计你的产品才是相对比较良性的状态。

4 音视频技术的迭代演进和未来

音视频技术迭代演进和未来

我们回顾音视频的技术发展其实受制于一整个系列的影响,比如说硬件的性能够不够?操作系统支不支持?多媒体协议的发展,应用的展现形式,用户的接受度,还包括整个互联网的带宽基础设施的建设程度。比如最早大家用的都是音视频,都是用专业的硬件,后来出现了通用CPU加多媒体的指令集。 

第二个是从方式的角度,出现了线程缓冲、FEC算法,其实内核网络协议没有太多调整,比如最著名的就是在4.9的时候bb2,还有现在比如说像现在 HTTP3.0会把quick作为基础等等,那么我们在协议上其实也在逐步做分层,比如说存储会作用于冗余编码纠错、编解码codec、传输编码,同时也引入了容器这样一个音视频封装概念。

比如还有我们大家都知道的像h264v8,现在未来会去往ABE去转等等。其实每一代的发展都是去实现一个更高的压缩率,让你能够以一个更低的综合码率去传输更高清的内容。

人对高清音视频通话的追求是永无止境的。我们以前觉得马赛克像素级的那种东西看得很开心,但是你现在应该很难回去了,你现在在看比赛的时候希望能看到球员脸上的毛孔,同时我们以前对音视频更多只是做内容的一个分发传播,其实现在已经发展为各类的实时和互动的场景,所以其实它的整个迭代引进是一方面是需求引进,一方面是底层的支撑能力的引进,而且它是一个协同发展的过程,每一块都不可或缺。

为什么说短视频要到4G时代才能迎来它的爆发点?你可以想象一下,如果你刷抖音,一个视频刷的中间卡了几秒钟,你的体验肯定是难以接受的。而且如果整个网络支撑不住,所有人都这样去刷的话,其实大家体验也会非常差。

4G时代,大家的平均网络带宽是多少呢?20~30兆;在3G的时代,大家的网络速度其实只有1兆到5兆之间,在二级网络的时候是更小的,每个人其实只有二三十KB,只能刷刷网,看看小说,刷刷一些简单的网页。

音视频技术的迭代演进和未来

那么面向未来也有一些很高级的功能,比如说刚刚我其实已经提到过了声音处理,还有特效,比如每个人都希望自己的声音更完美,男生希望更火爆,女生希望更可爱或御姐风等;

还有比如更智能的降噪还有声纹识别。声纹识别应用已经越来越多了,比如微信登录时可以通过说几句话来去识别一个人的声纹的。实际上声纹是个很好的生物密码技术,每个人说话的声音或者是念不同语句或者数字的声音是不一样的。

再比如说音轨的分离。一段语音可以由很多声音组合而成,比如说我们现在常见的PC或者手机能处理36路这样一个声音去混合起来。混合起来容易,但是怎么样去做分离?比如记者在采访的过程中,实际上是有多个人在讲话的,我能不能去分离出来某一个人讲话的声音,然后我把它先去做做语音转写等。

还有更高效的codec,这个是永无止境的追求。4k的视频传播大概对带宽要求在8兆到20兆之间的,但是能不能去实现更低的,比如说2-4兆,在这样一个带宽要求上去实现4k的效果。实际上这部分已经有进展了,基本上可以确定它他会在5G时代落地。

5 如何结合RTC加速线下业务的线上化

如何结合RTC加速线下业务的线上化

最后一个,在RTC之前其实已经有很多业务,虽然互联网化、数字化已经让很多业务从线下搬到了线上,但还是有很多很重的场景做不到。比如说在线上课,比如说远程看病,以前为什么做不到?是因为以前的视频方式很难真正去满足用户的需求。

过去供给方和需求方是不愿意坐在一起去磨合的,那么疫情在某种程度上是把大家逼到了一起,没有退路了,必须互相往中间去靠,不能是你指望我走999步,你只走1步。

在这个时候,我们传统说的直播已经成为了一个生产力工具,它可以很好地去加速原来一些很顽固的线下场景线上化。包括现在的云旅游、互联网看病、城市一网通管理。

第二,UCloud的思路是做PasS,因为做SasS,一个人一个公司一个团队是不可能去满足所有行业的需求,也很难去做到真正的聚焦。当然可能会比如像教育、视频会议这些行业本身很大,专门投入进去做也没问题。

第三,音视频行业绝不仅仅局限于教育、医疗、办公,作为一个云计算公司,我们发现很多有意思的需求,比如说工业的各类远程控制,以前的设备是看不到当地的画面的,只能通过一些传感器的数据去做软件操作,或者说我看到的画面是有延迟的。如果它是实时的,就能去做一些更精密的控制,或者是更有想象力的一些操作,某种程度就可以解放人。

在疫情期间其实已经出现很多场景了,比如一个人在远程去操作一个挖掘机,在某一个环境比较恶劣的地方去挖矿,还有通过智能家居的方式去控制家里的一些东西。

每一代技术的发展都是游戏娱乐领域的创新会走得更快。

另外,我认为5G时代会出现云游戏的概念,原先我们在玩手机游戏的时候是非常消耗手机性能的,那么未来渲染可能是放在云端去完成,本地其实只是相当于在看一个电影似的,然后其他的操作触碰的一些指令是单独完成的。

最后我们坚信的一点,每一次交互方式的变化都是革命性的,比如说手机的交互从传统的数字按键变成了触摸屏,电阻屏变成了电容屏,比如说语音的交互。

如果能有一个稳定、易得、便宜的RTC云服务将是引爆这些需求的最好契机,也是将这些需求线上化最好的催化剂。

6 精彩互动问答

问:疫情期期间的在线网课,连阿里腾讯都要紧急扩容,目前的技术水平是否难以应对这种超级高并发?

答:首先我们要正确理解两个东西,第一个是并发,这个并发算高吗?今年在疫情期间,钉钉的最高峰值是3000~5000万,腾讯视频腾讯会议的最高并发好像是2000万左右。我们都知道目前的国内的最高并发应该算是像微信的十几亿并发,或者是腾讯阿里双11的时候,这种每秒的几万笔支付,还有比如说像秒杀活动算高并发。我认为在线网课的这个并发不算高,而且这个并发是可以去做隔离的,比如说我可以按照一个房间来,可以按照一个地区来,是可以去做分级群这样一个架构设计的,反而真正复杂的是资源,需要海量的计算网络存储资源。目前并不是国内的技术水平不能达到,而是大家平时不会囤那么多的资源在那。

问:疫情期间很多机房无法进入服务器,供应商也无法及时上门服务,如何去保证服务的稳定?

答:这个事情叫巧妇难为无米之炊,如果没有足够量的资源储备,实际上是谁都没有办法。所以第一个是你的资源池要足够庞大,比如说现在云服务都是全球部署,资源的储备肯定是很重要的。

对于客户而言,比如说我们一个地区可能有数万台服务器这样一个规模的话,总归是提供了更大的弹性,然后大家可以更多的去复用,比如说你是白天上课,我是晚上娱乐,我是中午吃饭,发新闻等等。更多的云计算是通过这样一个集中式的更大资源池提供更高的弹性。

问:疫情期间总是出现卡顿和崩溃的现象,这个问题是如何去解决的?

答:崩溃的问题其实主要是几个方面,第一个是性能问题,长时间高性能的运作,会导致你的设备系统的稳定性较差。第二个是产品的设计问题,如果你产品都没有很充分的去设计,没有考虑用户的使用场景,只是把供应堆积在那,这种事情是难以避免的。

最后一个,互联网的任何地方都是可能会存在bug,随着整个产品去迭代,这种现象会越来越少,性能也会越来越优化。

但是卡顿就是一个比较复杂问题,卡的问题其实也是要分情况的。比如说刚刚我之前有提到过,在视频会议或者是在教学场景下最极端的情况下,我们可以把视频降到更低的分辨率,或者说比如说现在假设我的网络很差,我可以把摄像头屏蔽掉,我只传播声音。 

第二,还是要取决于整个服务抗弱网的一些更优秀的算法,或者是一些在工程上面的创新。同时也离不开基础设施的提升,比如以前大家上网用ABS拨号,后来换成了光纤入户。未来的网络也会逐步提高,同时在无线通讯上,4G网络的平均延迟只有30毫秒左右,在3G时代是400毫秒左右。所以某种程度4G网络下已经可以去实现实时音视频的互动,那么在5G下效果可能会更高,所以卡顿其实是要综合来考虑的。

问:纯线上课的互动和教学都不如线下,怎么让大家从心理上去接受线上线上教育?

答:线上课的最大的问题就是互动和教学的效果,本质的一个原因是线上教学老师传递的信息不够多。比如说老师现在在一个课堂里面上课的时候,老师一抬头可以看到这个房间里面的所有信息,只要一个动作,我就可以接收到很多信息。

但在线上课,现在的产品能力做不到。比如说一个房间有几十个人的时候,如果把这几十个人的图像都堆在下面,老师什么都看不到,但其实现在已经有一些产品设计了,比如说这个房间里面是一个小班教学,35个人的图像轮流滚动,每次放5个人的图像在下面,这种方式老师其实就已经能够看到部分学生的教学反馈了。

还有一个是大家可能都没有意识到,上课的时候,老师会不自觉地问大家有没有感觉到卡顿,有没有听不清,其实有很多无效的互动都会浪费在了这些问题的回答上。

如果我们的服务足够稳定,我们的产品设计能够让老师捕捉到更多的信息,老师不用去关心学生是否听到我的回答,当某个学生掉线的时候,老师能立刻能有个东西提示他,把所有主动做的事情全都变成被动,任何意外情况都会以一种形式去通知到老师,这样互动效果就会大大提升,这也是接下来整个面向在线教育产品升级的地方。

教学效果为什么不如线下,也包括一个监督不够的问题。现在也已经有一些针对性的产品设计了,比如说端上至少可以做一个事情,我可以捕捉学生的画面,如果我识别不到人脸的,我就发一个提示声音去通知学生,甚至还可以通知到老师。

第二我们再去做一些辅助教学工具,老师平时在黑板上写板书很容易,但是如果在电脑上要去手写一个东西相对比较困难,现在有些手写板的功能也慢慢在做了。

这些问题并不是说不可逾越,都是可以通过产品技术或者是在上课过程中的一些创新的教学方法、教学理念去大幅改善。

问:地方的小型培训机构,还有转型线上的必要吗?

答:在我看来是非常有必要。

首先第一个是疫情的反复,我认为疫情是长期存在,今年疫情期间,我看到一个数据说之前有40万的培训机构,疫情后骤减到25万,倒闭了40%。如果再来一次疫情,还有多少人能保证自己活着?

所以在我看来,不叫转型线上,而是要储备一定的线上能力。小型的公司可以去简单使用一些大的平台,看谁用得好,你可以跟着去学习去改变你的使用方式 ;大一点的机构,可以去储备自己的线上产品;更大的机构,甚至还要做技术储备、教学工具教学设备。比如我看到很多大的教育机构,现在其实都在花很多的钱去去盖楼建直播间。

第二你也可以去思考,我们去看教学的场景分为三个大的方面,教学、辅导、练习。那么练习这个事情是不是很好地可以通过线上的方式完成?辅导,尤其像一对一的方式,是不是有一部分可以通过线上?有一部分很重的很复杂的采用线下?知识是有记忆曲线的,比如说线下很多时候必须要家长去接送,有时候课必须是周末才能上的,那么这时候可能有些知识点就已经忘记了。如果我在周中的时候去穿插一节网课,不讲新的内容,只做巩固,是不是效果就会好很多?

所以在我看来,这不叫转型线上,而是一定要去具备线上的思维方式,储备一定线上的能力。

问:怎么样去看待云技术对教育行业的重构?

答:这个问题其实我是这样看的,因为教育是一个很相对比较传统比较重要的行业,但是同时它的数字化过程不会那么迅猛。比如说现在可能大家只听到一些互联网大学的概念,基本上不会听到互联网小学、小学、中学。

第二,教育某种程度上是一个人力密集型行业,效率相对比较低下,比如说老师批改作业可以用AI来实现,另外,老师在备课的过程中也有很多工具,我见过在线教育机构有的备课已经是用游戏引擎来做了,他们做出来的是一个动画效果,而不是简单的小视频和图片做演示。

再比如说孔子一直讲因材施教,有教无类,我们现在可以通过推荐算法去识别一个人的真实能力,这样就可以避免非常枯燥的题海战术。我们大家在面对高考或者中考等应试教育的过程中,实际上做了大量无效的工作,比如说题目的知识点我已经很熟悉了,但是我还是在不断去刷题等,那么未来能不能通过大数据去满足智能化的题目推荐。

以上就是我今天的分享,谢谢大家!

转载自雷锋网

未经允许不得转载:老刘测评 » UCloud裴志伟:RTC实时音视频互动背后有哪些关键技术?