十年磨一剑,美国巨头视频网站Hulu的直播系统架构实践

原创
开发 架构
Hulu今年 5 月发布了最新的 OTT 电视直播应用——Hulu Live TV,目标是替代传统的有线电视服务,和国内最近兴起的直播应用,比如 YY,映客等。本文主要分享 Hulu 现有视频系统、Hulu OTT 直播应用和基于 DASH 的直播系统这三方面,会涉及基于点播构建直播过程中的一些难点与经验。

Hulu 是 2007 年在美国上市的在线视频公司,提供会员制付费视频服务,商业模式与国内的爱奇艺、优酷类似。Hulu 今年 5 月发布了***的 OTT 电视直播应用——Hulu Live TV,目标是替代传统的有线电视服务,和国内最近兴起的直播应用,比如 YY,映客等。

本文主要分享 Hulu 现有视频系统、Hulu OTT 直播应用和基于 DASH 的直播系统这三方面,会涉及基于点播构建直播过程中的一些难点与经验。

Hulu 现有视频系统

Hulu 终端与视频内容

Hulu 应用在电视、电脑、各种移动设备、甚至游戏机上都可以访问,如下图:

[[199231]]

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 希望在直播过程中,实现点播的效果。在直播的同时,可以随心看之前的视频,如下图:

[[199232]]

为了实现这样点播的使用模式,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

[[199235]]

主导 Hulu 核心视频技术的研发,参与及主导了 Hulu 多平台 DASH 播放器,视频播放质量监控及分析系统,OTT MVPD 系统。从清华大学博士期间就一直从事互联网视频相关领域的研究和开发。曾任北京闪动科技有限公司技术总监,该公司出品的“Dopool手机电视”客户端累计激活下载量过亿。

 

责任编辑:王雪燕 来源: 51CTO技术栈
相关推荐

2009-07-27 18:49:01

ITIL运维管理摩卡

2012-08-30 09:47:22

编程自学编程程序员

2011-11-04 09:04:50

Eclipse

2011-04-03 15:50:10

2021-03-04 22:33:43

人工智能制药医疗

2013-07-16 10:05:41

阿里巴巴大数据

2021-05-31 09:46:15

华为MatePad Pro鸿蒙系统

2012-09-12 09:45:24

腾讯恶意网址

2010-07-27 08:45:35

Perl 6Larry Wall

2017-09-01 13:20:43

华为

2013-10-15 20:53:28

虚拟USB固网打印服务器

2022-07-26 14:20:49

新华三

2017-09-20 14:07:44

2017-01-05 18:02:05

服务器

2018-10-12 17:12:47

华为

2022-04-25 17:46:25

纷享销客

2018-09-14 13:52:04

2017-01-04 13:24:08

中安威士数据库

2022-09-05 10:45:15

WOT51CTOIT

2022-07-21 07:31:41

数据库分布式
点赞
收藏

51CTO技术栈公众号