【腾讯课堂】视频点播上云实践

2022-06-29 16:09:21 浏览数 (1)

本文首发于 IMWeb 社区网站 imweb.io。点击阅读原文查看 IMWeb 社区更多精彩文章。

总体介绍

腾讯课堂是一款通过线上的直播与点播向用户提供在线教育服务的产品,从 2014 年成立至今,已累计存储了 250 万个视频,共 600 TB,累计时长 150 万小时。之前一直采用的是腾讯视频的方案,但使用的是 MP4 格式,用户拿到了播放链接之后很容易盗版,所以趁着上云的潮流,我们将视频点播迁移到了腾讯云 - 云点播上,本文主要会讲一讲我们整体的方案、Web 接入的方法和遇到的一些问题

视频点播分为视频上传和视频播放两个部分,下面的表格整理了上云前后的部分数据对比:

腾讯视频

腾讯云

Web 视频上传成功率

92%

99.5%

视频转码速度(两小时左右的视频)

> 60 分钟

< 20 分钟

播放成功率 - PC

99%

98.7%

播放成功率 - H5

97%

97.1%

可以看出来上传成功率和视频转码速度有了极大的提升,PC 和 H5 侧的播放成功率云和腾讯视频基本持平。

整体方案

考虑到存量视频较多,没法短时间内全部从腾讯视频迁移至腾讯云,同时迁移过程中用户可能继续使用老的方式向腾讯视频上传,所以整个点播上云分为两期进行:

  1. 第一期主要工作是接入腾讯云的上传、转码和播放功能,确保用户新上传的视频均走云的流程,同时后台将新上传的视频旁路一份到腾讯视频,这样既可以在用户播放云视频失败时前端降级至腾讯视频播放,也方便出现重大问题时快速切回至老的腾讯视频方案。
  2. 第二期工作则是将存量的腾讯视频全部迁移至腾讯云上,同时接入云的 AI 功能,进行鉴黄、鉴暴和鉴政。待现网数据稳定且达到预期后,即可彻底摒弃老的方案。

视频上传流程

视频上传整体方案如上图所示,主要涉及三块:

  1. 向业务后台获取签名
  2. 调用云SDK 进行视频上传
  3. 云服务器进行视频转码

上面三块中最重要也最容易出问题的是"调用 SDK 上传"这一部分,直接决定了上传成功率,但也很容易受用户网络状况的影响,需要重点关注,建议记录详细的用户日志以便进行问题定位与排查。

另外,其实上述流程图与腾讯云文档给出的客户端上传指引略微有点差别,主要在于第 4 步通知业务后台上传完成这里,官方文档中是云后台来通知,我们实际采用的方式是 Web 侧来通知,从而避免出现 Web 侧调后台接口出错提示用户上传失败后,云后台又通知业务后台保存相关数据的情况。

视频播放流程

在以前使用腾讯视频的方案时,出于种种考虑,我们并未对视频做加密处理,导致有些课程被他人恶意盗录。目前上云之后,我们使用的是加密 HLS 的方案,通过云提供的 Key 防盗链 和 DRM(数字版权管理)方案,我们对视频做了加密处理,就算被拿到了视频地址,也无法进行盗录,进一步打击了恶意行为,保护了老师的版权。

用户浏览器在播放视频时主要流程如上图所示,其中依靠第 1 步获取 Token 和第 3 步获取 DK 进行版权的保护,他们的作用分别为:

  • Token 用于防盗链,可以 限制视频 URL 的过期时间、最大允许播放 IP 数等,具体的计算方法和验证逻辑由业务方自定义。
  • DK 用于对视频的加密切片进行解密,用户直接获取到的视频分片均通过 AES-128 进行了加密,其值由腾讯云密钥管理服务(KMS)提供。

Web 接入的流程

视频上传

接入方法

视频上传主要依赖云提供的 vod-js-sdk-v6,用 TypeScript 编写,具有较为完善的的测试用例,代码质量很高

0 人点赞