随着在线教育覆盖面的增加,互动课堂授课方式正在向多样化发展,为了适应新形式的发展,腾讯视频云推出了全平台覆盖的互动课堂解决方案。为客户打通了直播、实时音视频、点播、存储、白板、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 整合了好几个能力,这是音视频能力、消息能力、白板能力和文档转码能力,蓝色部分是我们提供的。绿色的是现在要去解决的,首先要看怎么拿到钥匙,然后是课堂管理。我们其实是不管课堂的,我们只有一个小群组,我们不维护课堂。然后布局、登录等等,这样事情要做。
本文转载自公众号云加社区(ID:QcloudCommunity)。
原文链接:
https://mp.weixin.qq.com/s/093uOHofVu2Nf2N4f1DUjw
评论