博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
郭卓惺:互动课堂的搭建实例及相关领域应用
阅读量:5867 次
发布时间:2019-06-19

本文共 5433 字,大约阅读时间需要 18 分钟。

本文来自,本次沙龙主题为

演讲嘉宾:郭卓惺 | 腾讯视频云终端技术中心

随着在线教育覆盖面的增加,互动课堂授课方式正在向多样化发展,为了适应新形式的发展,腾讯视频云推出了全平台覆盖的互动课堂解决方案。为客户打通了直播、实时音视频、点播、存储、白板、IM、AI等多个业务场景,提供了全方位的paas层能力。尤其是得益于小程序和H5的快捷性,互动课堂解决方案更是在需要快速体验课程的场景下具有独到优势。

大家下午好,我叫郭卓惺,是腾讯云互动课堂的负责人,在腾讯一直负责音视频相关的业务。之前做过互动直播,并与新东方等教育机构有一些技术上的交流。今天我将从以下几点讲讲互动课堂的方案,首先讲在线教育需求原型,然后讲一下腾讯给出的互动课堂方案,接下来讲一下音视频能力和白板、文档能力,最后讲一下怎么样用我们的解决方案进行快速上手。

腾讯云互动课堂框架

首先讲一下市场需求原型。因为我是技术人员,所以我只简单列举了一下市场上教育的原型,如点播类的教学,说简单点就是录一段视频,通过一个平台或者一个网站进行分享。我们觉得这种方案有不好的地方,它缺乏互动,没有实时性。而现在比较好的1V1教学和小班教学,通过直播的方式去扩散,推到各个教室或者各个学生端,直接实时进行互动。还有纯直播类型的万人公开课,类似于秀场直播一样,老师在上面讲,把流全部推出去,这种互动性少一点,但是要求覆盖率和稳定性比较高。去年双师课堂比较火,但双师课堂在技术上来讲跟1V1和小班教学是一个类型的,实际上它是两路流,在技术上来说并不是一个新技术。我讲的是云端技术,并不是硬件,硬件肯定要搭很多东西。

简单来讲,教师端将音视频能力快速推到各个地方的学生,允许一路学生把自己的视频流跟老师进行互动,这就是简单的1V1教学。如果是小班教学和双师课堂,教师也需要看到所有学生的视频流,这就是腾讯云现在所提供的能力。我们举个案例,很多人需要有课件,系统需要把课件分享到各个端,将PPT转成图片进行分享。这些原型完了之后,腾讯云主要提供的是三个能力,实时音视频互动能力、白板文档能力和消息的能力。除了这三个之外,还需要回放,就是将一节课的内容记录下了,录成一个MP4或者其他的音视频类型,后期学习、评估。除了这三个大方向之外,还涉及到技术点有很多,包括白板、存储、直播、混流、录制等能力,我们把这些能力抽出来,给客户提供一个完整的解决方案。

音视频能力TRTC

音视频这块,做在线教育,肯定是希望将教师讲课的内容迅速推到各个端,所以音视频互动的能力是最重要的。简单来说,老师端通过SDK,将流导入腾讯云后台。音视频的数据流导到各个学生端,快速将内容分享出去。腾讯云最近刚刚推出来的针对互动教育的一个SDK,这个SDK就是拥有了音视频能力和白板能力,以及录制回放的能力。如果你是一家做在线教育的公司,你现在做的事情就是绿色的部分,绿色的就是你现在要做的事情,蓝色的是腾讯已经提供的能力,您拿了这个SDK以后,就会有音视频能力、白板能力、录制视频能力。你推到腾讯云,腾讯云帮你做扩散。

重点介绍一下音视频能力。我们最早起源于QQ多人语音视频,它服务了12亿分钟,服务了300家客户。实时音视频是最早针对教育行业的,因为它端对端的延迟比较低,连麦延迟也比较低。它有三大特点,第一是稳定,它已经经过了QQ的考验了,也把能力开放出去服务了这么多客户,它很稳定。第二,快。现在我得到的数据,从视频的预处理到编码、传输,通过极速模式加速推出去,到学生端看的数据最快可以达到200毫秒左右。三,全平台覆盖,我们是腾讯,天然支持小程序、H5。

这是我们开放出来之后支持的客户,包括快手的连麦,包括自己内部的客户、外部的客户、做教育的客户。强调一下实时音视频的快区别于其他家的快。第一,它是私有协议,而不是传统的推流协议,而是私有UDP协议。第二,我们自建的核心网络,我们有1200多个节点,200多个海外节点。第三,因为我们是私有协议,为了把这个流快速分享给微信,分享给标准协议,我们做了一套转码系统,可以兼容H5和小程序。这是传统做直播需要用到的协议,有RTMP、HLS,它们都是基于TCP,所以它们有一个特点比较慢,不太适合做强互动的内容。我们改进后的协议差不多是200毫秒的延迟左右,现在走DC直联的话,现在通过加速链路的话会非常快。

我们使用的是UDP的协议,它有没有弊端?必然有的。TCP是最稳定的协议,丢包之后会大量重传,而UDP并没有这个机制,丢包就丢包了。所以如果没有QoS质量保证,音视频没有办法听,丢了大量的数据,对面收的数据是不完整的。我们在腾讯云内部做了很多事情,首先我们做了FECW前置校准,也就是在发送端先冗余了一些包,如果接收端发现丢包了,可以通过冗余的包,通过差分算法,将丢失的包补出来,我不需要重新请请求一次,让他把包发过来,这样避免重传。为了质量稳定性。所以我们在UDP的基础上,补做了丢包重传的机制。

然后是信源的保证。一个音视频的帧是由I帧和P帧构成的,它送到编码器之后,是从I帧、P帧送给编码器,形成一系列的视频动作。传统的做法有一个巨大的弊端,其中一个P帧丢了,后面的P帧没有办法用了,因为这个P帧是参考前面的P帧。如果这一帧丢了,后面所有帧都没有用。我们做了一下改进,做了好几个SP帧,所以单纯的一个SP帧是参考前置的SP帧。如果一个SP帧丢了,是没有影响的。后面是参考新的SP帧。所以这个对抗丢包性,做了大大的加强。

当你在网络不好的情况下,服务器会自动降低帧率,调整自己的发动策略。通过我们的流动策略,通过RDT协议,上传到CDN。接收端也一样,通过CDN扩到最近的一个节点,传到的学生端,做延迟修正,做编码解码和渲染。

为了保证客户端达到足够快的策略,我们做了很多工作。我们最核心突出的是目前快。但其他方面我们还做了自适应网络抖动,当您的下行丢包率超过65%的时候,我们保证声音是基本稳定的。上行丢包35%也同样如此。我们支持25fps、720p的配置。我们有首帧秒开功能,是指我们在最近的服务器上面缓存了上次的数据,你再进的时候,会拉到上次的画面,让你感觉到第一画面不是黑屏。

我们还做了一些避免拥塞的策略,可以保证自己的流能够稳定地向外输出。我们做了很多跟质量相关的监控,可以实时看到当前用户的音频质量、视频质量、丢包率、CPU等信息。现在我们来讲讲的是我们搭建的核心节点的框架。腾讯云这边的音视频是按照两种结构走的,DC代表核心节点,OC是边缘节点。所以DC一般部署在离三大运营商近的地方,它的连通率是4个9,而OC差一点,一般只有2个9。所以标准的直播链路是这样走,先走最近OC,然后再走DC,然后通过跟相关的DC值连,然后再通过边缘节点扩散。这样的话链路非常长。我们现在做的加速链路,上行的UDP的包,直接找到最近的OC,然后直通光纤,这样速度会节省很多。在互动课堂这块最重要的就是互动的延时比较多,很多在做在线教育的时候,传统的问题延迟太大了。讲课都讲了两三秒了,你才能看到,很难做互动。视频和白板数据是挺快的,你给学生说,答一下现在白板的题。你的声音还没有过去,白板的数据已经过去,完全不同步,他可能还没想到问题,这是一个完全不同步的状态。

在视频互动这块,A的主播刚刚通过保证上行流量的情况下直联到B,B的连麦用户,也是直联到A。但是B是连麦观众,优先级并没有B这么高,仅仅能保证音频。为了兼容分发,如果你是观众,你看他们两个聊天,同时去拉这两路流过来,这样你的带宽成本很高。所以我们做了云端混流,我们腾讯云内部实时把这两路流混成一个标准协议,你可以拉出来,只有一路流的方式。所有观众就可以通过一路流来看他们两个人的聊天。

这是一个老师通过学生端,在腾讯云互动课堂上的解决方案。老师推流到腾讯云,腾讯云首先做了一个Upload集群,转码,转成标准协议,然后再CDN扩散。若不走转码,可以直接走点播系统。为了简化设置,我们开发了一套web配置页面,比如你要配置它的码率、分辨率、帧率,都可以控制。这就是实时音视频的解决方案。

小程序 vs WebRTC

小程序这块音视频技术我们天然支持,小程序在腾讯云内部走的协议是RTP协议,webrtc走的协议是H5,H5走的协议是RPCP。我们的协议用的是UDP,所以我们在腾讯云内部,实际上已经做好了转码。因为房间内的转码,就是房间内的权限、管理、状态,腾讯已经做好了对两个标准协议的支持。虽然是直联协议,但是您可以把直联协议分享给微信,也可以分享给H5。我们的音视频质量相对而言,比较稳定,抗丢包率超过了30%,抗800毫秒的网络抖动,支持百万级的超大规模的房间,支持千万级的并发,现在是全平台覆盖。

白板与文档

白板和文档现在是独立的模块,也就是跟音视频没有关系的。它走的是暗的通道,白板是画一些坐标点,如是TTP,它把先TTP转到腾讯云上面,把文档上传上去,腾讯云给你转码成图片列表,再加上你画的线、涂鸦数据,直接在通道进行传送。这个消息通道也是腾讯云内部提供的,可以分享到通道内部的所有人。为了避免后进的人没有数据,我们把数据保存到腾讯云,后进人的数据可以直接通过腾讯云直接拉取历史数据。

我们的白板不仅支持力度是涂鸦、文档,提供一个独立的通道,也支持回放。刚刚刘总问我们白板和音视频有没有混在一起?目前我们在做这个事情,但是离正式商用还是需要大家在等待一段时间。一个PPT,我可以把PPT每页转成一个图片,再分享出去。教师端主要的流程是采集、编码、序列化,采集的点进行压缩,通过消息通道发送出去。而学生端则是解压、解码、反序列化。这块采集的点是坐标点,所以我们的JDI相对而言比较大,我们需要做一定程度上的压缩。

其实做白板这块有很多技术上的问题,第一个是大小屏幕不一样,因为有些用PC,有些用平板。还有单笔的连贯性,就是你画的时候,那边不同步走。还有乱序的问题,因为数据传输过程中有乱序,所以我们要做乱序重排的方案。还有文档预览,只有白板这块是没有意义的,要把文档传递出去才有意义。最重要的,如果你们自己有白板,你接别人的音视频,你怎么确保视频和音频的同步呢?所以实时性的保证也是很关键的。我做了坐标规划解决第一个问题,我们取的坐标点并不是绝对点,而是所有点我们都做了相对于左上中心点角的坐标规划,如果它是X轴,就除以它的宽度、除以1万,Y轴也是一样。所有的屏幕都是16:9。

为了达到连贯效果,这边画一笔出去之后,如果画很长时间不松笔,你平移,UP事件是抬起来的。之前我们的做法在于UP的时候把采集的数据往外发。这样会导致,第一你的数据点过大,你的解压和压缩、对数据通道的承压能力有挑战。因为画很长的过程中,对方看不到,你只有松开对方才能看到,所以我们做了很多处理。我们当时把这个事件发出去,平移的过程中,采集平移的数据点进行压缩,定时发送。所以您基本上可以看到是一个实时的过程,我这边画一点,那边可以看到画一点。这边的采集的时间定时差不多200毫秒左右。

同步性。我画的时候,你也在画,那白板怎么处理呢?我们可以支持三五个人同时画。我们的处理很简单,所有的数据到了先缓存,缓存收到之后并不立刻画,还是有一个定时的机制。所以数据来了先存缓存,存完缓存之后定时去拉去,就会展示的跟所有人数据都是同步的,同时我们也把数据传一份到腾讯云。

文档。文档是借助于内部腾讯云的转码,就是COS,COS本质工作把东西传上去。它提供了一个所有文档的转码,当我们把文档上传到COS,COS会通知前助处理,告诉前助处理通知转码服务进行转码。转码之后,它会拉这边的PPT,进行PPT的转码,然后再写回一个COS。下面有流程,上传PPT、通知SCF,转码服务。

学生注意力检测

这是我们针对教育行业学生注意力的检测,这也是一个预研的方案,现在还没有推出来。我们会采集学生的特征点,根据特征的算法,去判断他有没有看屏幕。所有的数据搜集到注意力曲线进行判断,判断这个学生对这门课的判断是如何。

快速上手

最后讲一下快速上手,只需要三步。第一步,开通腾讯云的服务,拿到钥匙。第二,集成TICSDK。第三,业务后台接入腾讯云服务。把这两者结合一下,打造你自己的在线教育课堂,因为每个人的需求是不一样的,但这是一个技术。

拿到SDK以后,四到五步,就可以把画面和互动的东西描述出来。首先是登录,然后创建一个课堂,加入一个课堂。让对方打开摄像头,连麦过来,你把流推出去,进行一些涂鸦,最后是退出课堂。

这是一个比较简化的解决方案。我们把音视频推给腾讯云,腾讯云帮你做转码和文档的转码和一些录制。把流推给对应的学生端。业务方需要取得录制文件,直接调热接口,这是一个简化图,真实情况还要复杂。

现在SDK整合了好几个能力,这是音视频能力、消息能力、白板能力和文档转码能力,蓝色部分是我们提供的。绿色的是现在要去解决的,首先要看怎么拿到钥匙,然后是课堂管理。我们其实是不管课堂的,我们只有一个小群组,我们不维护课堂。然后布局、登录等等,这样事情要做。

获取更多详细资料,请戳以下链接:

问答
相关阅读
 

此文已由作者授权腾讯云+社区发布,原文链接:

欢迎大家前往或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

转载地址:http://qonnx.baihongyu.com/

你可能感兴趣的文章
FusionSphere——桌面云防病毒
查看>>
emacs中如何让complie信息自动滚动
查看>>
centos7挂在usb盘
查看>>
vtun配置再思考【路由】
查看>>
sqlite数据库基本操作
查看>>
Verilog的parameter 和 define
查看>>
Class yii\base\Component
查看>>
Jenkins与Docker的自动化CI/CD实战
查看>>
python核心编程笔记chapter 5
查看>>
mysql 提示mysql daemon failed to start解决办法
查看>>
记得要不断奔跑(一)
查看>>
我的友情链接
查看>>
快速入门:十分钟学会Python
查看>>
SpringMVC 中List 对象转换成Json格式 List对象中属性为NUll解决
查看>>
理解SQLServer元数据库
查看>>
我的友情链接
查看>>
虚拟机环境下系统联网配置
查看>>
OOM的的基本用途和实际的用例
查看>>
网络通信第四课 C++发送Post请求的完整案例
查看>>
Oracle之管理以及exp、imp的使用
查看>>