WebRTC直播课堂实践:实时互动是核心,Android开发必须会的技能

不知道大家是否清楚,为什么流媒体在之前都没有发展起来这种很好的互动性呢?有很多人认为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

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

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

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

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

二、WebRTC课堂实践

image

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

2.1 在线白板

image

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

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

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

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

image

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值