在线教育直播技术功能点

最近几个月一直在关注在线教育这块的技术,也对比了cctalk、YY、展示互动这些直播系统的情况。先从用户的感知方面来说一下目前的一些功能点。

在线教育的直播技术可以让老师和大量的学生建立起连接,通过实时的沟通完成教育环节信息的传递。包括老师的声音、表情、课件资料、老师的动作(如书写涂鸦)。这种信息传递由于软件的支持,足以超过传统的线下教育的信息传递效率,并且这种信息成本更低、使用更加方便。这种更高效的信息传递途经,是投资界觉得在线教育有着可以颠覆传统教育的重要原因。

当然,对于传统教育,学校和教室除了是一个信息媒介外,还是一个与同龄人真实互动的场所,价值远远超过教师知识传递媒体这个价值,这也是我为什么觉得传统教育不太可能会消失的原因。即使没有大规模的学校,也会有线下学生聚会或者游玩这种替代教室来实现同龄人沟通互动的作用的。

另外的辅助教学工具,例如课件资料中心,移动化直播工具,运营系统都需要逐步跟进。本文先不介绍了。

所以,目前来看我们的在线教育直播技术的需求很明确了,就是传递以下的信息:

  1. 传递老师的声音。目前声音还是最有效的沟通方式。带宽约10KB/s就可以很清楚的交流了。延迟可以在1秒内,这样基本是能够完成正常通话的。目前直播平台语音都是支持的。

  2. 传递老师课件以及在课件上的动作。也就是老师看到的课件资料需要和学生是同步的。这样,老师在针对课件进行讲解的时候才不会导致学生不知道老师在讲哪个知识点。这个信息的重要性是与声音需要绑定在一起,不能间隔太大。

    目前主流的课件传递方式是将PPT转为图片(cctalk)或者转为flash图像(YY以及展示互动),也就是一开始将课件传递给学生客户端,然后通过协议将老师的翻页动作或者书写动作传递给学生客户端并重演一遍。由于只是传输操作动作,所以数据量很少,甚至比语音更小的带宽就可以了,约5KB/s。这种方式也有缺点,就是只能传两端都定义好的协议的内容,并且这些内容只能是简单的图片或者PPT、PDF。

    另一种方案是将老师的屏幕通过编码传递给学生端。随着编码技术的发展,例如H.264,可以将不太变化的图像以很低的码率传输然后在学生端解码。所以即使每秒20帧进行采样,真实的平均码率在100KB/s左右也可以看到比较清晰的课件了。这种做的优点是可以传递任何的老师端的图像。例如老师端播放的电影老师端任何软件内的功能,例如PPT的各种笔记工具(荧光笔、红色笔)或者软件的操作流程,都可以传输给学生。缺点是带宽比前一种方案大10倍,中国某些小运营商的用户还是有可能会被卡住的。这种流媒体也比较依赖于流媒体cdn技术(虽然已经很成熟了)。另外为了使用了编码,图像或多或少都会有失真,例如比原始的模糊一些。录窗口有一个坑,就是被录制的窗口不能被遮挡,并且看上去需要像是一个软件中实现而不是YY的录屏功能。

  3. 传递老师的摄像头,以及当前的场景。这种方案与上面提到的第二种方案密切相关。一旦有了这样的需求,那么就必须要有第二种方案相关的技术了。因为摄像头捕捉的技术是通过固定协议搞不定的。所以通常的处理还是:对摄像头采集的图像进行编码然后通过cdn加速发送给用户,再在用户端用解码器解码。目前h.264编码,rtmp和hls进行封装都是比较成熟的方案了。带宽其实只需要30KB/s就可以比较清楚的看到老师的表情和身后的场景了。目前比较热的主播真人视频聊天以及秀场,都是这种方案。例如YY、bobo的女主播、暴雪嘉年华的现场直播。这种方案的瓶颈就是流媒体CDN,延迟一般在6s左右。这个时间你可以这么理解,老师问了一个问题,同学6秒后才听到并作出反馈。

  4. 传递老师以及同学间的文字和表情图片。就是我们说的聊天室,例如QQ聊天,可以发文字和QQ表情。因为这些聊天软件教育了中国用户10多年,大家都习惯了用文字来和远端的用户一起交流。目前的网络游戏其实和聊天室的通信也是类似,通过底层的长连接来进行消息的通信。我最开始使用了pomelo很快的搭建了实时的消息传递后台,后来在同事们的强烈建议下还是使用了公司统一的推送系统。这样就由推送系统来维系长连接,用户的请求还是直接发到我的后台,我再通过推送系统传递给别的用户。有一个问题是:用户建立连接我是知道的,但用户断开连接我不知道,因为连接由推送系统在维护,这样会带来一些不方便。

  5. 国外的高大上的虚拟现实在虚拟世界再现真实课堂目前我们暂不考虑。


  • 从YY100,cctalk来看,课件都是使用了协议方式。
  • 大家都有聊天室也基本都有丰富的聊天表情。
  • 从cctalk来看,抛弃了老师头像,并且对于课件使用协议而非图像传输方式。这使得自己不用依附于cdn,同时将语音交互做到了最好,包括多人同时语音。体验是非常棒的。但是会损失因用户看不到老师头像而带来的付费意愿,毕竟没有头像,学生会感觉付的钱有点亏。
  • 展示互动实现了头像,这个比较依赖cdn的情况。
  • 关于客户端还是浏览器:首先yy、cctalk、腾讯都是客户端的。而展示互动是浏览器。浏览器会有各种不兼容的问题。并且用户的电脑信息或者一些特别的效果例如语音采集做起来都很难。所以我比较建议做自己的客户端。

目前缺少的技术:

  • 音频
    • 音频核心编解码算法、前后处理算法研究,跨平台音频引擎研发,包括:不同平台音频或视频采集播放;
    • 音频前后处理如回声抵消、噪声抑制、静音检测、自动增益,或者视频前后处理如色阶增强、防抖动等相关;
    • 网络传输适配包括FEC策略、缓冲控制、错误掩盖等;
    • 编解码器核心算法针对不同平台优化;
    • 用户语音、音频质量的评估和数据分析。
  • 流媒体
    • 理解已有的流媒体协议和文件格式
    • Linux后台转码,画音同步,混音应用开发;
    • 直播、点播用户分发平台开发
    • 数据传输,数据存储的设计和开发
    • 精通媒体文件格式和协议,MP4、FLV、、RTMP、HTTP、HLS等;
    • 精通多媒体容器封装、解析
    • 熟悉多媒体开源工具的使用和二次开发(如ffmpeg,mplayer,x264等);

比较急的: 来处理视频的编码和发送的window C++开发。

comments powered by Disqus