WebRTC直播课堂实践:实时互动是核心

725 阅读15分钟

随着低延时流媒体技术的不断进步,在线教育行业持续升温。基于WebRTC架构的低延时直播技术突破以及其在教育行业中的实践与思考。
GitHub:
先放github链接
(更多完整项目下载。未完待续。源码。图文知识后续上传github。)
可以点击关于我 联系我获取

非常荣幸可以跟大家分享我所做的一些项目和实践,本次我要分享的主要内容包括以下几个方面:

1,视音频技术的演进;
2, WebRTC 课堂实践;
3, WebRTC 在教育行业的思考;

一、视音频技术的演进


首先,我们一起来看上面这张图,这张图是由国际电信联盟电信标准化部门统计所得,图中的横轴坐标是毫秒,代表着时延,纵轴坐标是用户的体验度。由上图,我们不难发现,时延达到150毫秒的时候,用户的体验度开始下降,当达到400毫秒的时候,用户的感受是无法容忍。由此,ITU-T G.114国际标准规定,延时超过150毫秒表示已经开始影响用户体验,并且用户可以容忍的最高延时是400毫秒。

举个例子,当发生台风天气时,电视台的主持人通常会连线现场的记者,当连线返回现场报道时,基本是过了两秒左右的时间,现场记者才收到主持人的话,听众的体验感相当不好。类似于上面的情况基本上是无法实现实时互动的,想要进行实时互动的关键点就在于低延时。我以前也曾经做过八年直播相关的研发,从最初的底层协议到RTMP协议再到现在的WebRTC,用户需求为何会逐渐从点播域向直播域靠拢,直播流媒体实时音视频为何会越来越关注互动,也正是因为有了低延时,互动才得以慢慢发展出来。

image

不知道大家是否清楚,为什么流媒体在之前都没有发展起来这种很好的互动性呢?有很多人认为RTMP协议很不错,并且现在外面大部分采用的都是RTMP协议。

既然如此,为什么大家都去研究WebRTC呢?首先,RTMP是基于TCP协议的,TCP是一个安全可靠的协议,它包含了很多机制,如数据的安全保障、三次握手、重传机制等,但是这恰恰会影响到它的传输时间。

举个例子,我现在手上有一份数据要发送给另外一个人,发送过去之后由于网络抖动导致丢包。他没有收到包则会返回一个消息来告诉我他没收到我的包,这样就会产生很大的延迟。那么,能不能直接用UDP呢?三年前的广电系统,比如北京卫视等采用的是TS流,TS流就是基于UDP的,它的传输非常有效。TS传输具有高可靠度,流媒体安全且质量好,但是基于UDP都是基于内网的,对网络的要求非常高。北京卫视也只有内部的网络全部用的是TS流,采用UDP的协议来传送,一旦离开公司,就不可行了。因为UDP是不安全的,它没有重传机制,没有各种保障的能力。从上图中可以看出,UDP相对来说延时是最低的,但整体质量很低,对网络的依赖程度也非常高,所以我认为这是一个成本的问题。在这里推出一个概念,叫做RUDP(Reliable UDP)。RUDP指的是将TCP和UDP各种优势结合在一起,包含的功能有:

1)冗余编码和前向纠错;
2)场景化的重传策略;
3)带宽自适应调整;
4)更优的拥塞控制算法;
5)多点 relay…

简单解释一下什么叫做场景化的重传,UDP因为没有重传策略,对于我们来说绝对不安全,场景化重传就是说,如果是I帧这种关键帧丢失,那就重传一个I帧,如果是一个不是特别重要的帧丢失,则不重传,或者说有一些可以做同步的信令标准没有到达,我也不重传,这样就可以极大的优化传输效率。

image
image

接下来介绍的是WebRTC的核心,大家也可以在Chrome,Google或WebRTC的官网上找到它的解释。概括一下,WebRTC 内核提供的技术能力包括:

  • 第一,低延时的音视频采集编码和解码。编码和解码是音视频中最重要的部分,是提供低延时的保证。
  • 第二,降低门槛,有浏览器的地方就可以使用WebRTC;这点我觉得是Google做得非常好的地方,目前微软、苹果、Google等都支持WebRTC,除此之外,大家现在手上用的很多硬件设备,都已经支持。最终会达到只要存在浏览器的地方都能使用。
  • 第三,优异的RUDP传输协议;WebRTC原本就是基于UDP的,在UDP上进行优化,可以更有效的使其传输的数据安全、可靠。第四,端到端的协商/建联框架;在七八年前,端到端上的直播几乎不可能实现,为什么那时大家看到都是广电做的直播,而不是互联网在做直播?原因是端上的系统度不够。

此外,WebRTC还提供一系列的业务能力:

  • 第一,低延时音视频垂直领域的发展; 什么是垂直领域?比如今天分享的主题——教育,就是一个非常垂直的领域,当前在线教育的火爆也正是由于音视频技术的发展,可以真正的实现沟通零距离。因此WebRTC对于垂直的领域非常有效,比如说教育、医疗行业等。
  • 第二,就是刚刚提到教育和医疗实时音视频。第三,互动音视频,远程广电系统;我之前在阿里巴巴为阿里云做了一个五地互传,当时阿里云在纽约,新加坡,肯尼亚,杭州等都有很多分部,会发现你要把他们放在一起沟通是一件很难的事,当时我们想到的第一个策略就是用卫星,但卫星的成本真的是高的离谱,而WebRTC就可以完全颠覆它,卫星传输的质量不如WebRTC是因为WebRTC采用的技术和算法完全超越了硬件所能带来的最低延时。第四,海外视频;WebRTC还有一个最大的业务能力是进行海外跨国传输,例如在之前将戛纳电影节上的一些活动的内容从戛纳传回来是一件基本不可能的事情,但是现在可以通过WebRTC实现,当然还要结合一些网络和语音的相关优化。

二、WebRTC课堂实践

image
image

接下来,从垂直领域来为大家介绍一下WebRTC在教育行业的课堂实践中的一些能力,包括电子白板、高质量通讯、IM和协作能力。

2.1 在线白板

image
image

电子白板是用于解决多人互动场景下,用户理解和分析的黑板能力。在教育行业中,无论是视频还是音频,都离不开这个白板。在学校里,对比现在和过去的课堂我们会发现变化是非常大的,但是只有一样东西没变,就是黑板,所以足以证明黑板有多么的重要。当我在一块黑板上面写字,一般人的做法是将它变成一个视频然后传播出去,让大家看到。但是这样有一个很大的问题,视频资源最少需要300kbps的带宽,这会占用用户很多的带宽,对于资源消耗是非常高的。

我们做了一件事情,就是让黑板变成一种描述性的语言。用描述性语言来替代白板,用它来描述白板到底画了一些什么,而它所占的带宽资源最高是9kbps,也就意味着,它的带宽消耗是用传统方式传输最低质量视频这种方式的1/30。这是一个非常伟大的突破,可以为客户节约大量的成本和资源消耗。视频化白板的体验问题包括无法放大缩小、不具备交互能力。但如果它是一个描述性语言,就可以随意放大缩小,并保持清晰。另外,对于视频,我无法在上面做第二次操作,但描述性语言可以。在数据扩充性方面,视频化白板是很差的,由于视频内容是非结构化的,导致很难被存储。

另外,AI是无法识别视频索引的。举例说明,我画了一只猫,现在AI的能力还不足以识别它是一只猫。因为我画的并不是特别有效,因此识别不了,但如果是描述性语言来表示,就能立刻识别出是只猫。最后是视频化白板的数据识别转换低。举个例子,有些AI公司会将一些视频中的数学符号识别成了数字,这是因为它无法识别。但对于描述性语言就可以轻松识别,因为它是一个矢量数据,它可以体量。这些说明了使用描述性语言改善了白板是有效的,在这里总结了一下,使用描述性语言白板带来的好处:

  1. 对白板改变进行冲突管理
  2. 描述性语言降低整个白板视频带宽
  3. 降低 CDN 使用成本
  4. 回放和录制存储要求极低,几乎可以忽略
  5. 矢量信息可无限放大细节
  6. 多端同步,相互备份

2.2 高质量通讯

image
image

Mesh、MCU和SFU是WebRTC的三种模式,目前可以说大部分使用WebRTC的厂商都选择了SFU模式,因为它是最高效的。MCU一般应用于广电领域,MCU就是不同端的推流,都发送到一个中央处理器上进行混流处理,处理完成后再分发给每个客户端。SFU指的是每个客户端都推流到服务器,由服务器转发所有的数据到各个客户端。如果广电要用到画中画的功能,MCU是没办法实现的。通俗的讲就是MCU将东西都固定好了,不能进行某一个区域的放大,它在服务端就已经进行了拼合。但是对于SFU,在收到服务器返回的数据流后可以再随意进行拼合。Mesh是一个最基本的,相对高质量的模式,但由于它消耗的资源及带宽功耗都比较高,所以不会经常用到。

image
image

高质量的通讯包括画质、流畅度和协同,画质包括了编码方式、码率和编码效率,流畅度包括了中间层构建、Plus插件和带宽优化方案,协同包括配套播放器和冲突管理。那在这里有几个问题想和大家分享一下:

    1. 1.8Mbps 的 720P 清晰度高还是 3Mbps 的 1080P 清晰度高?
    1. H264 Profile Level 决定了哪些要素?用户体验是什么?
    1. 为什么有些场景下只能用 Profile level 3.1 ?
    1. 究竟我们应该使用哪些最优方案去做画面的匹配?

对于第一个问题,我问了很多人,最后发现一个很神奇的事情,还是有很多人会选择3M码率的1080P的清晰度高。我想跟大家说,Adobe官方有一个推荐,刚开始推RTMP协议的时候,对编解码也给出了一个标准的推荐值,720P推荐的是1.8Mbps,1080P推荐的是5.5Mbps,只有这样才能满足相应画质的传输。那么这个问题的答案也就自然而然了,用3Mbps去传输1080P是不满足对应画质的,看起来的效果不如1.8Mbps 的 720P 清晰度高。

对于第二个问题,H264 Profile有3.0、3.1、4.0、4.1等不同level,这些算法依次是复杂程度越高,图像的精度也越好,这也决定了画质和效率,而用户体验指的是流畅度。对于第三个问题,为什么有些场景下只能用H264 Profile Level 3.1,而它的画质没有那么清晰?举例说明,有一天小天才的负责人跟我说,他要做一件事情,就是让孩子的父母可以用着手表进行有效的沟通。那这当中有个问题,我们当时给它设计的是画质优先,将profile level调到了4.1,结果发现,手表8分钟就烫得戴不了,功耗实在是有点高。后来,我们想到把这种嵌入式设备的profile level降到3.1,所以这就回答了为什么是有些地方情愿不需要画质,而需要它的profile level更高效,这跟功耗有关。

对于最后一个问题,就画面匹配这件事情来说,到底是提供一个高profile level的算法,还是低功耗的性能?这是两件事情,需要有一些权衡,确定其中一个有最大化利益。

2.3 IM/AI

image
image

在这里我想给大家讲一些案例,就是AI在视频里的一些应用。某英语的老板,给了我一个案例,他说有一个小孩上他们的课,都是一对一模式上课,结果那个小孩上来跟老师说, “老师啊,那个我不想上课,是我爸让来的,你该干嘛干嘛去吧,我打游戏去了”。最后,这个课堂只是摄像头开着,但是两边都没有人,成了一个无效的课堂。

后来,我设计了一样东西,就是AI在视频里面的应用。这个东西就是用一个机制去计算摄像头的两端,如果超过一分钟没有识别到人脸,那么它触发一个报警给到教务,告诉他说,这是一个无效的课堂,你应该管管。

第二个案例,为了防止高校中的翘课现象,我在课堂上装一个摄像头,然后对视音频进行AI的识别,事先知道每个人是谁,然后不间断去识别。若某位同学进来后,10分钟之后他从后门溜走导致识别不到他,立刻出现一个报警,表示没有检测到某位同学。

还有一个应用是我在跟浙江传媒大学一起沟通的时候发现的,中国的教育到现在还没有一个庞大的数据库,没有对某一个学生从0到1的分解。举个例子,现在的探头在视频里的应用可以侦测很多行为,我发现上语文课时,有个小姑娘永远坐在第一排,并且侦测她举手次数超过30次,然后又发现她上数学课时,永远在最后一排睡觉。它触发的是系统自动进行一个大数据分析来告诉说这个女孩是适合文科,而不适合理科的,然后把这个信息交给教务,在这个女孩身上她打了一个标签,大数据识别出来她适合文科,这就是社会价值、教育的价值。还有就是在教育领域也已经做了的,利用AI来做课堂笔记,在讲课的同时,将老师和学生的语音进行语音识别直接转成了文字,也就意味着,当这个课堂结束,课堂的所有笔记以及老师说的每一句话,已经全部变成一个文档留存下来。

三、WebRTC 在教育行业的思考

image
image

最后,说说我们在教育行业里面的思考。第一,传统教育是解决更多场景化的共性需求。举一个简单的例子,场景化教育就是当我有一天站在某个传统高校的讲堂进行演讲的时候,该如何帮助提升效率。第二,垂直教育,利用WebRTC能力,构建创新型协作思维,让程序员也可以做教育。第三,PUDC的开放,我认为现在中国教育还是有很多机构参与的,但未来会是一个PUDC的时代,每个人都是老师,每个人都是学生。最后,智能改变,就是去实现各种AI的教育。

更多完整项目下载。未完待续。源码。图文知识后续上传github。


可以点击关于我 联系我获取