Hulu 是 2007 年在美国上市的在线视频公司,提供会员制付费视频服务,商业模式与国内的爱奇艺、优酷类似。Hulu 今年 5 月发布了***的 OTT 电视直播应用——Hulu Live TV,目标是替代传统的有线电视服务,和国内最近兴起的直播应用,比如 YY,映客等。
本文主要分享 Hulu 现有视频系统、Hulu OTT 直播应用和基于 DASH 的直播系统这三方面,会涉及基于点播构建直播过程中的一些难点与经验。
Hulu 现有视频系统
Hulu 终端与视频内容
Hulu 应用在电视、电脑、各种移动设备、甚至游戏机上都可以访问,如下图:
Hulu 最初也是从网站形式做起,随着时间的推移,特别是美国家庭的客厅是用户经常观看视频的场所,所以 Hulu 不断地研发,适配能播放视频的硬件。点播的内容主要是电视、电影、自制剧、儿童节目等比较专业的制作内容。
Hulu 商业模式
Hulu 主要有两种商业模式,一种是通过视频广告获取利润,一种是通过注册会员获取利润。
下图是一个电影广告的例子。不仅有常见的视频广告,还有可以和用户直接互动的部分,提示用户点击购买电影票。多年来,Hulu在广告模式上有很多尝试,包括客厅设备上也有很多互动形式。
除广告外,会员制也是 Hulu 盈利的主要方式。通过注册会员,缴纳会员费,用户可以享受到***,最全的电视节目。
点播系统面临的挑战和关键技术
数字视频供应链
视频供应链部分,用户虽然不能够直接看到,但是会给用户产生直接的影响。Hulu 在美国市场较大的卖点是电视台播放的节目,第二天就可以同步上线。
这看似简单的需求背后,却对前面整个的处理周期要求很高,如上线速度、管理用户的观看时间等等,每个环节都要做好。面对供应链带来的挑战,Hulu 建立了整套视频转码系统,由这个分布式集群来应对。
多平台视频服务
面对多平台播放的挑战,Hulu 建设了多平台视频服务,自制播放器,保证在各个平台正常播放,用一套统一视频流就可以支撑所有平台。
还有基于 DASH 统一视频格式,它的可扩展性、封装效率等方面也表现优秀。
内容保护
Hulu 基于 DASH 及 CENC 建设了多 DRM 视频系统,保障不同平台,即使用不同的 DRM 系统也可以使用统一的加密视频源。
广告插入
网络不好的情况下,插入广告可能导致视频重新缓冲,给用户带来不好的影响。Hulu 的做法是基于 DASH XLINK 的动态广告插入机制,可以在流上进行两者合并,播放器实时进行预加载,而不需要切换播放器、流等操作。
视频播放质量保证
为了保证视频播放的质量,Hulu 建立了视频播放质量保证体系,包含客户端可以做自适应动态码流的切换、多 CDN 自动切换、实时视频 QOS 监控及响应系统等。
现有点播视频系统架构
如下图,是围绕点播产品的系统架构:
目前很多在线视频的架构基本类同,但是 Hulu 比较特殊的地方是:
美国内容生产厂商对内容安全性要求高,要求所有内容必须有 DRM 加密模式,所以这里构建了比较完善的 DRM license,来保证所有内容都可以安全播放。
在重要的广告部分,单独布设广告服务器,保证用户有好的广告体验,杜绝很长、重复的广告。
Hulu OTT 直播应用
OTT 是 Hulu 新的直播应用,直播是在点播的基础上增加很多模块,但也有很多难点需要克服。
如下,是直播系统的需求:
- 高清、高帧率直播。
- 尽量接近 IPTV 体验:低延时、快启动及切换。
- 24x7 不间断直播服务。
- 与点播体验接近的直播内容。
基于 DASH 的直播系统
为了满足 OTT 直播应用的需求,Hulu 研发了一套基于 DASH 的直播系统。
如下,是简单的架构图:
CP 接入流通过 TS Over RTP 的方式,把内容发送到多码率直播编码器,编码器输出 6 到 8 个不同的码率,*** 128K,满足低带宽强度下用户的使用。
之后,进入封装和加密环节,封装成苹果和 DASH 格式。一方面,时间信息及元数据存到实时数据库,进行 MPD 生成。另一方面,实际数据的文件封装后,按时间切成小块,上传到源站,再到 CDN。
当客户端播放器准备开始播放时,从 MDP 服务器了解哪些视频可以播放,同时通过 CDN 拿到实际视频的文件。
构建直播系统面临的挑战
构建直播系统的过程中,Hulu 克服了来自各方面的难点。下面主要分享“点播”式直播、瞬时用户暴增和用户观看质量三方面的挑战。
“点播”式直播
Hulu 希望在直播过程中,实现点播的效果。在直播的同时,可以随心看之前的视频,如下图:
为了实现这样点播的使用模式,Hulu 采用 DASH 视频格式来应对。
主要做了以下的事情:
- 时间及时间信息存于 Manifest。MPD 不仅要描述视频本身,同时还要描述发生的事情,如现在是否在播放广告等,这些都用 Manifest 方式存储。
- 采用视频分流,短分片传输,把音频拆分出来。这样可以实现多个码率之间切换的同时调到任何播放位置。
- 全平台覆盖。可支持网页、客厅设备、移动设备等几乎所有客户端设备。
如下图,是 DASH 格式:
瞬时用户暴增
应对瞬时用户直播暴增是大多直播平台都会遇到的事情,Hulu 也不例外,在线上这样的事情很常见,一个热门节目上映,比如 HBO 新出的 Game of Thrones,流量便会呈现十几倍的增长。
应对这样情况最有效的方法就是提高系统弹性、可扩展性。解决方案有构建微服务架构,主要方式如下:
- 负载均衡。在全球建立三个数据中心节点,个个节点之间可以进行负载均衡。
- 微服务框架。基于 Docker 的可扩展微服务框架,如下是简单示意图:
- 利用公有云抗负载。当发现数据中心负载承受不住时,会溢出到公有云。
- 全方位服务状况监控报警系统。当任何一个服务发现 RPS 等发生变化,都会发出警报,运维人员会***时间处理。
还有多 CDN 自动流量分配机制,***层是人工规则,根据目前国内的使用情况调整比例。当发生实际 CDN 访问失败的情况下,便会用 Fallback 到另外一个 CDN,另外的客户端也有自动的流量分配算法调节。
用户观看质量
我们要如何来保证用户观看视频的质量呢?比如如何保证不会黑屏?Hulu 建立了一套实时视频质量监控系统,在每个客户端都埋了相关模块,模块会搜集关键指标的情况。
如下图,是实时视频质量监控流程图:
一部分用 SBAK 实时事件处理的方式,进入 QOS 进行下一步的处理。另外实时处理的模块会最终加入 Elastic Search。
这样一来,就可观测缓冲率、平均码率,直播延迟等等情况。如上图,不同颜色实际上是不同团队负责的事情。
如下图,是对整个环节中所有 SLA 的监控,某服务的监控,绿色表示状况比较好,红色表示有问题,数字变大就要引起注意。这里有各种各样的指标,基本上所有的系统都有这样一套对应的监控系统,每个团队里都可以看到自己团队的整体状况。
以上内容根据李彬老师在 WOTA2017 “高性能直播系统架构”专场的演讲内容整理。关注架构、算法,运维等技术领域,有投稿、寻求报道意向技术人请联络 wangxy@51cto.com
主导 Hulu 核心视频技术的研发,参与及主导了 Hulu 多平台 DASH 播放器,视频播放质量监控及分析系统,OTT MVPD 系统。从清华大学博士期间就一直从事互联网视频相关领域的研究和开发。曾任北京闪动科技有限公司技术总监,该公司出品的“Dopool手机电视”客户端累计激活下载量过亿。