11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

只需三步,技术大咖教你如何快速搭建在线教育互动课堂

  • 2019-10-29
  • 本文字数:5256 字

    阅读完需:约 17 分钟

只需三步,技术大咖教你如何快速搭建在线教育互动课堂

随着在线教育覆盖面的增加,互动课堂授课方式正在向多样化发展,为了适应新形式的发展,腾讯视频云推出了全平台覆盖的互动课堂解决方案。为客户打通了直播、实时音视频、点播、存储、白板、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


2019-10-29 15:111106

评论

发布
暂无评论
发现更多内容

不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?

Jerry Wang

JavaScript 前端开发 Fiori SAP UI5 11月月更

HummerRisk V0.5:新版云合规报告、资源风险联动、拓扑展示等内容

HummerCloud

云安全 云原生安全 11月月更

EMQ《物联网平台大规模数据接入和处理性能评测方法》成功入选“可信边缘计算推进计划”

EMQ映云科技

物联网 IoT 边缘计算 边云协同 11月月更

uniapp简单入门

格斗家不爱在外太空沉思

vue.js uniapp 11月月更

HTTP和HTTPS是什么 二者区别是什么

肥晨

11月月更 http和https http工作原理

知象光电完成过亿元C轮融资,加速发力全球市场

硬科技星球

装了我这 10 个 IDEA 神级插件后,同事也开始情不自禁的嘚瑟了

沉默王二

IntelliJ IDEA

Paddle模型性能分析工具Profiler:定位瓶颈点、优化程序、提升性能

汀丶

自然语言处理 nlp 性能分析

云数据库时代,DBA将走向何方?

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

SOFARegistry | 大规模集群优化实践

SOFAStack

开源 SOFA SOFARegistry'

写给关系数据库开发者的 TDengine 入门指南

TDengine

数据库 tdengine 时序数据库

uniapp多端分享(app,小程序,公众号)

格斗家不爱在外太空沉思

vue.js uniapp 11月月更

GoFrame的gmap相比Go原生的map,天然支持排序和有序遍历!?

王中阳Go

Go golang 高效工作 学习方法 11月月更

河北首家城商行传统核心业务国产化,TDSQL突破三“最”为秦皇岛银行保驾护航

腾讯云数据库

数据库 分布式 tdsql 客户案例 腾讯云数据库

RocksDB 7 终于解决了 Compaction 时性能下降问题

Kvrocks

redis RocksDB kvrocks

京东云开发者|IoT运维 - 如何部署一套高可用K8S集群

京东科技开发者

运维 k8s IoT etcd K8s 多集群管理

2022世界互联网大会 | VoneCredit为中小企业纾困解忧

旺链科技

区块链 产业区块链 世界互联网大会 企业号十月PK榜

web--文件上传

我是一个茶壶

WEB安全 文件上传 11月月更

计算机网络:组帧

timerring

计算机网络 11月月更

微信小程序—制作一个简单的跑步小程序

格斗家不爱在外太空沉思

JavaScript 微信小程序 11月月更

Serverless Developer Meetup 杭州站精彩回顾!【附赠PPT】

阿里巴巴云原生

阿里云 Serverless 云原生

为什么要用CSS精灵图

源字节1号

软件开发 前端开发 后端开发 小程序开发

详解 Serverless 架构的 6 大应用场景

阿里巴巴云原生

阿里云 Serverless 云原生

【C语言】break 关键字

謓泽

11月月更

ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜

DevData Talks | 让效能度量产生真正的价值,要避开多少“坑”?

思码逸研发效能

研发效能 研发管理工具 企业研发管理

JavaScript的垃圾回收机制

肥晨

js 垃圾回收机制 11月月更

拥抱“大信创”浪潮,优博讯开启成长新曲线

Geek_2d6073

前端面经

肥晨

前端面试题 11月月更 前端面筋 超全面试题

软件测试面试真题 | 面试时被问到知识盲区,该怎么办呢?

测试人

软件测试 面试题 测试开发

3层结构+7大特点,带你认识华为云IoTEdge

华为云开发者联盟

云计算 物联网 华为云 企业号十月 PK 榜

只需三步,技术大咖教你如何快速搭建在线教育互动课堂_文化 & 方法_郭卓惺_InfoQ精选文章