V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shipinyun2016
V2EX  ›  程序员

网易云课堂:用视频云技术承载 3300 万用户的流畅学习体验

  •  
  •   shipinyun2016 · 2016-10-31 11:06:12 +08:00 · 2312 次点击
    这是一个创建于 2970 天前的主题,其中的信息可能已经有所发展或是发生改变。

    “做时代奋进者的高效充电站”,作为一个致力于用互联网推动实用技能教育的团队,网易云课堂的宏愿无疑是美好的。然而,在技术人才紧缺、网络环境迥异、终端设备复杂的背景下,如何在快速扩张的同时保障全网海量用户都能有最佳的学习体验,始终是网易云课堂无法回避的挑战。幸运的是,网易云课堂团队找到了属于他们的辅助利器——先进的视频云技术。

    借助网易视频云的专业技术,网易云课堂在视频上传、编解码、存储、播放、防下载、链路检测等核心功能的实现,都不再需要团队自己研发,既保证了服务质量以及新业务的上线速度,又节省了大量的开发人力和维护成本,让网易云课堂能够专注于业务的发展。

    1

    一、在线教育技术需求

    网易云课堂是网易旗下的在线实用技能学习平台,于 2012 年 12 月底正式上线,目前拥有 MOOC (慕课)、 K12 、企业云等产品线,积累的课程数量达到 1.3 万+,课时总数超 33 万,课程视频数量 100 万+,涵盖实用软件、 IT 与互联网、职场技能等 20 多个教学领域,服务覆盖 Web 端、 Android 端和 iOS 端,吸引了 3,300 万学习用户。

    网易云课堂极快的成长速度,在很大程度上得益于互联网业务全局扩张的特点,但网易云课堂团队的另一个感受是,搭建一个在线课堂的系统,同样需要在技术、人力、精力上有很大的投入,并且随着业务的扩张和规模的增长,在线服务质量保障的难度也是几何级地增加。从业务需求的角度,网易云课堂技术负责人方金德介绍了网易云课堂的核心技术诉求。

    视频转码

    视频编解码对于视频业务非常重要,要把大量讲师通过千差万别的设备录制上传的格式各异的视频转码、压缩,转换成几种通用格式,以便快速输出到用户的播放终端,如 MP4 、 FLV 和苹果上专用的 M3U8 ,这是一项技术含量很高的任务,需要专业的人才来研发出可行的方案,并构建视频编码集群来支持。

    视频上传和存储

    全国各地不同讲师的视频课程上传到网易云课堂服务器,首先网络通信方面要能够保证视频文件的上传速度,需要针对不同链路的优先队列的功能;其次视频文件通常都是大文件,并且讲师开课、上传视频的时间是不固定的,经常会有很多老师突然开课,这就突然需要很大的存储空间,然而临时采购和部署存储是很不方便的,所以需要提前做好容量规划,需要一整套的技术来保证视频文件的上传和存储。

    视频的全网播放

    网易云课堂的 3300 万用户分布在全国各地,其中包括很多海外的用户,这些用户的网络环境差异很大,需要大量的 CDN 节点来加速视频流的传输,保证用户可以流畅地播放视频课程。当然, CDN 服务也需要和存储平台进行很好的整合。

    视频监控和追踪诊断

    CDN 节点不是无限的,为了保证全网播放质量,还需要一套能够快速帮助用户解决问题的监控和诊断体系,一是整体状况的监控统计,包括各个地区不同的用户、不同的课程视频,其播放质量如何;二是追踪,当某个用户反馈存在播放问题时,希望有一个类似探针的服务,能够追踪整个链路,不需要让用户帮忙做很多的操作,就可以快速定位出问题的症结所在,从而能够及时给出解决办法。

    视频保护

    在版权意识模糊的中国环境下,网易云课堂还需要防止用户非法使用视频文件,包括 URL 防盗链、防下载等。

    最开始,网易云课堂研发团队曾经尝试搭建视频系统来支撑整个业务的,包括转码、存储、加密等环节, CDN 则是外采一家传统 CDN 服务。细说起来,这个过程也算是一部“血泪史”。

    针对视频转码,研发团队需要花大量的时间来为用户处理编解码过程中的各种奇怪的错误。例如,因为用户视频有非常多的格式,部分视频可能会存在音频流失的状况,这很容易导致转码失败。即便只是少量视频存在问题,团队要帮助用户从每一个视频中找到问题所在,并切换处理方式直至转码成功,也是非常耗时的工作。

    据方金德介绍,网易云课堂视频转码技术从无到有,大概花了 4 个人月——这对于当前互联网业务迭代速度而言,无疑是比较慢的。然而,因为网易云课堂缺少专业的视频人才(整个行业都呈现专业人才稀缺的状况),开发过程中还需要学习各种资料,不得不付出这样的代价。而有了编解码技术之后,团队在短期之内也没有能力再持续做协议的深度优化,只能做一些简单的视频分析,解决简单的问题,一旦出现真正复杂的问题,还是解决不了。

    在视频播放方面,有台湾地区、美国的讲师在网易云课堂上开课时,就反馈了视频上传、视频播放方面存在问题,然而云课堂采用的 CDN 在海外节点方面仍亟待完善,并没有办法根除这个问题。

    在监控方面,研发团队此前采用业内常用的技术,很难通过监控立即查明播放端出现问题的原因,更不用说帮助用户以最快的速度解决问题了。而且,原有技术也没法实现智能化的链路选择。对于讲师,采用的优先队列方式,是列出可能的节点,由用户来手动选择不同的上传通道,并不能实现最灵活的资源调配。

    对于所期待的细粒度监控,方金德透露,研发团队曾经深入讨论分析了自研的可行性,最终认为技术难度很高,要达到初步预期的功能,保守估计也需要好几个人月的投入。具体而言,这需要解决播放端和后台两方面的难题:播放端的信息传递需要开发很多的工具,后台还要做很多统计分析的工作。

    网易云课堂的视频保护,最开始是通过 CDN 防止下载,但是只能防一些小白用户,比如面对录屏的情况就只能徒呼奈何了。毕竟要做成加密 SDK ,需要了解底层的协议,技术难度很高。

    除了加密之外,播放端的技术需求主要是缓冲,这方面倒是相对轻松,因为有一些很好的开源工具可以利用来实现。

    二、网易视频云之美

    恰逢其时,网易杭州研究院(简称“杭研”)专门为网易互联网业务提供技术支撑的私有云改造已经轻车熟路,并且杭研已经准备着手解决网易云课堂、网易云音乐等各业务团队面临的视频技术挑战,让这些团队专注于业务本身的研发。于是,网易云课堂和杭研的合作顺理成章地开始了。毕竟网易云课堂业务线仍在不断扩张,还需要很多的研发人力。

    首先是底层基础的视频存储服务。杭研基于其研发的网易对象存储系统( Netease Object Storage , NOS )来实现对视频数据的存储服务。 NOS 是一个分布式的 Key-Value 存储系统, Value 的容量上限为 1TB ,并提供多租户流量隔离,所以基于 NOS 的视频存储可以较为轻松地应对网易云课堂的存储容量和高可用的压力。同时, NOS 提供的大文件分块上传功能,对于视频上传而言可谓雪中送炭。此外,结合网易 CDN 服务,网易云课堂能够面向不同地区的用户实现一站式的视频上传、存储、分发服务。

    与 NOS 相结合,杭研视频团队还打造了一个分布式视频处理平台 NTS ,用以支撑网易云课堂的视频任务处理,支持包含录制、转码、视频合成、截图等常用的视频处理技术。 NTS 通过如图六大模块和子系统,对用户管理、任务调度、任务追踪、事件回调和文件存储等核心功能需求,同时实现了调度子系统的考可用和水平扩展。 NTS 视频处理输入输出基本来自 NOS (录制或截图任务的输入视频流除外),简化了 NTS 服务的使用。

    1

    视频编解码方面,杭研对底层音视频算法进行了深度优化,相同画质节省 10%~30%流量带宽,并且针对互联网传输的特性进行码率平滑优化,避免突发的视频码率上升造成用户播放卡顿。

    视频保护方面,网易云课堂也采用了杭研提供的视频加密技术,是一个底层的跨平台 SDK 工具,加密方式是在播放文件中增加了一些用户信息的标记,用以防止用户录屏(用户录屏时会被发现),同时不影响服务的稳定性和流畅性。

    在解决 NOS 、 NTS 、加密等问题之后,网易云课堂也希望将这些功能服务化,用于解决内部产品的需求。事实上,网易云课堂此前也有过一些相关的尝试,不过,通用设计没有那么彻底,比如在数据隔离、账号分配等方面,因为业务快速扩张背景下研发人力紧缺的原因,并没有实现理想的精细化的效果。

    杭研视频团队在满足网易内部需求的同时,更加意识到了视频业务的需求,已经将视频转码、加密、容量伸缩、高可用、 CDN 等能力都集成在一起,形成了网易视频云公有云解决方案,提供全平台 SDK ,完全实现了 PC 、 iOS 、 Android 、 Web SDK 的无缝对接,具有接入方便,二次开发量小等特点,同时还提供配套的全天候专业技术服务。

    现在,有视频云之后,网易云课堂就可以从这些工作中解脱,专注于业务。而网易视频云来做这些事情,则可以做得更加专业。例如,公有云的 NTS 相比之下提供了更为细致的任务统计、资源监控功能用于容量规划,可以解决海量用户、资源超售的挑战。

    在网易云课堂看来,因为之前与杭研视频团队合作的历史背景,技术同源,在数据结构等方面已经做过很多的适配,完全迁移到新的网易视频云平台没有任何障碍。不过,出于在线访问数据的考虑,数据同步是一件值得注意的事情,虽然底层都是 NOS ,对象管理可能略有差异。

    而生来就完全在网易视频云上搭建的,是网易云课堂 2016 年 1 月上线的 K12 产品,因为这是一个新业务。方金德介绍, K12 系统的搭建,由前后端各一个工程师,用不到两天时间就初步完成,由于 NTS 、 NOS 、 CDN 、加密等服务,已经把最核心的痛点都解决了,只有接口的访问以及一些小的需求点,还需要视频云团队的支持,但这些不是本质上的需求。再经过双方一周时间的无死角联合调试、迭代, K12 运营人员使用起来已经很顺畅。相比之前的产品线需要研发团队花费大量的时间去踩坑, K12 产品线快速接入视频云并完成磨合,只花了很短的时间,大大缩短了新业务上线的时间。

    三、后续技术规划

    播放质量监控、定位问题的探针,这是网易云课堂更高级的追求。现在的监控,只是一个链路选择,把靠近用户可能的链路列出,人肉切换尝试寻找最优链路,还没法做成一个智能的方案让用户直接定位到最好的节点上。同时,网易云课堂也希望看到全国不同地区的视频播放质量,包括失败、延迟、卡顿等情况。方金德表示,这两个方面是网易云课堂与网易视频云下一步合作的方向。

    四、总结

    在教育资源不平衡的今天,基于视频技术创新的在线教育提供了填补差距的平台。网易云课堂的实践表明,在线教育虽然才刚刚开始,网易这样的公司积累的专业视频云解决方案,已经可以支撑基于网络视频开展的新业务,比如网易视频云还支持了青果、云音乐、 Bobo 、宝宝树、东家守艺人等业务。在视频云和视频业务团队的合作之下,针对不同的应用场景的视频云产品因为得到不断打磨而成熟、完善,必将反过来推动在线视频业务的增长。

    vipygt
        1
    vipygt  
       2016-10-31 18:23:38 +08:00 via iPhone
    这是想说啥呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.