蓝光和4k视频正逐渐普及,4K视频峰值码率超10Mbit/s。架构平台部TVideo平台从资源,链路、缓存、接入进行调优,有效解决4k高码率视频的二次缓冲问题,播放体验全面领先竞品。
| 背景
随着音视频编解码、超分辨率、VR/AR等技术的发展,iPhone8、4K电视、VR眼镜等终端设备的更新换代,高码率高分辨率片源(4K视频、360°全景视频等)的层出不穷,多媒体用户观看体验正在逐步升级,整个行业生态链正在快速向高品质内容切换。
就分辨率而言,上面提到的4K视频指分辨率达4096*2160的片源,对比其它分辨率还有2K(2560*1440)、1080P(1920*1080,目前腾讯视频蓝光的分辨率)等。腾讯视频在2017年下半年为进一步提升用户体验推出“杜比特权”,引进4K片源。
分辨率的提升必然伴随着码率的提升。相比蓝光视频的3Mbit/s码率,杜比特权4K视频峰值超过10Mbit/s,这对后台下载(Tvideo平台)带来巨大挑战,为提供至少10Mbit/s下载速度,需要在网络延时、缓存IO、回源速率等方面进行优化升级。
1.Tvideo平台介绍
腾讯视频Tvideo平台运营着公司内部各项重要音视频业务,除腾讯视频外,还为空间视频、QQ音乐等提供支撑。拥有16T+自建带宽,亿级别的视频库。
Tvideo采取多层缓存,冷热分类架构。音视频文件上传到Tvideo后台源站,源站存储模块为每个文件加入特征信息,防止恶意用户盗链,分析文件热度,按不同优先级将文件推送到中间源;中间源缓存按业务进行软件隔离,保障每个业务有独立存储空间;城域点负载边缘加速,通过调度、链路加速等措施保障数据快速传输到用户终端。
2.高码率视频后台优化揭秘
当前高码率视频面临着网络延时,缓存IO不均,接入/回源耗时带来的卡顿等一系列问题,如杜比视界4K节目,码率峰值高达10Mbit/s,一部电影高达10GB存储,如何保障后台服务质量,提升用户观看体验?
针对上述问题,Tvideo平台在链路、缓存、接入等做了多项优化,解决缓存负载、链路卡顿、播放高延时等问题。
2.1 链路加速
客户端播放媒体过程中,没有出现任何卡顿称之为无缓冲,反之称之为二次缓冲,无缓存占比越高,说明后台服务越好,链路加速重点解决用户播放音视频卡顿的问题。
引起卡顿的因素很多,如后台网卡降速,传输网络波动、跨省&运营商访问速度跟不上、小片请求造成IO碎片等。Tvideo通过如下策略,解决链路带来的卡顿:
- 极速分发:多线程10MB/s速度下发,异步落盘
- 数据合并:HLS多分片合并直出,伪流处理
- 回源加速:根据客户端场景,后端自动加速
- 慢速修正:支持跨网矫正,慢速链接协议栈加速
- 按码率回源:根据现网回源速度,自动选择最佳回源路径
对于文件在边缘节点不命中场景,分为热点不命中和普通文件不命中,链路加速策略分别使用极速分发和回源加速,实现边缘节点“100%命中”。
极速分发指的是将文件从源站快速分发到边缘节点,解决源站、中间源等繁忙链路拥堵的情况,极速分发通过P2P组网、分级削峰、智能识别码率等方式,实现秒级内将一个切片视频推送到全网,在腾讯视频热剧抢先看、热点突发、会员保障等场景,发挥着重要的作用。由于分发网络节点间热点互通,将全网TOP(k)高码率热点文件分发到边缘节点,实现热点视频边缘命中,减少链路延时。
对于普通普通不命中场景,采取回源加速策略,每次回源记录回源速度,高码率视频使用回源速度大于码率3倍以上的回源IP,无法满情况下,采取多回源IP并发分片回源。
杜比视界4K视频采取fmp4分片,由于fmp4切片文件过小,每次回源请求小分片造成链路速度达不到预期,Tvido采取进行多分片合并回源下载策略,减少链路延时。
上图测试音频小文件多个分片合并的回源速度,可以看到,在TCP没有建立起来的情况下,将多个小分片合并回源速度效果明显。
当然后台链路加速还包括对客户端访问区分优先级,当客户端进行紧急下载,后端使用多连接加速;对于慢速请求,则选择协议栈加速等,通过上述优化,最大限度缩减耗时,保障链路下载速度。
2.2 缓存优化
缓存是Tvideo的核心模块,包括缓存按业务管理策略,热点文件&分片界定算法,冷文件淘汰、全局负载均衡等算法。
上图所示为Tvideo平台城域点机房集群架构,其中中心索引模块维护集群中所有文件的索引信息,下载HTTP模块负责业务请求的接入,数据存储模块负责冷热数据管理。
冷热数据存储模块和内存缓存统称为缓存,热点分级是缓存模块的分级是缓存模块的核心,对于普通视频热点统计策略相对简单:下载HTTP模块在接入阶段通过边缘计算,快速处理70%左右的热点请求;而相对冷的请求,通过中心索引模块计算,通过以上热点统计分级计算,实现热点快速统计。
而对于高码率视频,除了使用上述常规方法,另外对缓存进行了特定的分级,包括根据机房维度分级,根据访问模型分级,根据码率进行IO分级和热点扩散分级。
2.2.1 根据机房维度进行缓存分级策略:
Tvideo平台每个机房质量存在一定差异,这样可以把资源分为优质资源和普通资源,通过现网访问流水分析得到不同机房质量情况后,将整个平台的缓存资源池按码率进行划分,对于普通机房,缓存更多的低码率视频,优质机房用于缓存高码率视频。通过机房调度完成优质机房服务高码率请求,避免高码率视频请求命中低质量机房的情况。
优质资源在文件淘汰过程中,保障高码率文件每次淘汰数量小于标准淘汰值(如高码率每次淘汰5%,普通视频每次淘汰10%),保障机房更多的空间存储高码率视频;而对于普通机房,一般只覆盖低码率业务,只有在资源不够的时候才会用上,可以空出更多存储供普通视频等业务使用。通过上述物理介质的分级,保障业务质量。
2.2.2 根据客户端访问模型进行缓存分级
根据客户端访问模型,可以将客户端下载过程分为快速阶段、渐进式阶段、P2P阶段。由于客户端每个阶段要求的下载速度不一样,后端缓存需要能够区分不同阶段,从而进行特殊处理。
用户观看一部影片,从客户端播放逻辑看,在刚开始播放时,客户端进入快速下载阶段。该阶段客户端播放器缓冲区没有数据,要求快速填满播放器缓冲区,以便减少网络抖动等因素带来的卡顿。当客户端缓冲区填满后,客户端进入渐进式P2P阶段,该阶段客户端停止向后台下载,采取P2P下载,如果P2P速度过慢,当缓存的内容过少时,再次向后台Tvideo下载,此过程叫渐进式下载。简单举个例子,客户端首次播放,快速下载180秒将缓冲区填满,播放器开始播放,同时进入P2P下载,由于P2P下载速度达不到高码率要求,当客户端缓冲区小于90秒后,客户端会向后台Tvideo平台继续下载,直到将缓冲区填满。
上述三个阶段对Tvideo后台速度要求不一样,后台根据边缘计算,探测到快速下载阶段的请求后,进行缓存内存加速,将部分数据预拉到内存。而渐进式下载过程中,后台根据文件VID进行预测,将文件预热到高速缓存介质上。在P2P补洞阶段,进行缓存负载均衡,保障机房内缓存负载相对平衡。
2.2.3 根据文件码率进行IO分级
当前Tvideo平台机房集群采取SATA和SSD存储混搭模型,解决回源较高问题,如SATA统一使用4T盘,保障边缘节点有足够的存储,能够挡住热点,根据访问热度,逐步向高速介质SSD上扩散。由于SATA单盘只能支持120Mbit/s,暂不考虑其它请求,若一个机房同时有大于12个用户访问同一个4K文件(10Mbit/s)时,SATA单盘将无法支撑所有用户的下载,需要快速将文件扩散到SSD上备份。
由于普通视频和高码率视频对机房集群内热点扩散的需求不同,特别是4k视频这类音视频分开存储,高码率视频对下载速度敏感业务,按码率和IO频率分级,向SSD和内存扩散,解决由于磁盘速度不够,带来的卡顿问题。
2.3 接入优化
接入优化主要解决跨省、跨运营商、资源不足等情况造成的卡顿,通过合理分配资源,解决由于资源不够,带来的卡顿。
客户端每次播放前,通过Tvideo调度平台接口获取具体下载地址,调度平台根据客户端的IP、码率等信息,选择一个合适的机房,通过负载均衡算法,选择机房的一个可以下载地址返回给客户端,客户端获取到下载地址后,向机房进行访问。简单的可以理解为,一个上海电信的用户请求播放,首先会访问Tvideo调度平台,然后Tvideo返回上海电信0001机房的一个下载地址给客户端,客户端向上海0001机房请求数据。
针对高峰期资源紧张、高码率视频卡顿率高,访问质量得不到保证的情况,进行调度分级策略:将VIP、高码率视频尽量本地覆盖,而低码率、音频、离线下载等业务,调度到二级资源或者区域资源,保障播放质量。如上表,当晚高峰,上海市区资源不够,将VIP高码率的调度到上海本地,而VIP低码率的调度到二级覆盖,而离线下载调度到区域覆盖如华东资源空闲的地方。
针对小运营商多出口问题,通过调度特征串,进行二次调度,解决跨网带来的卡顿。如上海移动用户通过Tvideo调度平台调度到了上海电信0001机房,客户端访问上海电信0001机房的下载服务器,下载服务器发现客户端IP不是电信的,返回302,让用户跳转到移动IP,进行访问。
| 总结
从资源,链路、缓存、接入进行调优,并通过码率分级、IO分级、业务分级等多角度优化,有效解决蓝光、4k高码率视频的二次缓冲问题。下图是自建和外包的无缓冲率的对比,通过上述优化,高码率无缓冲率提升1.5%。