APP下载

CDN存量MP4视频播放优化方法

2020-10-26黄润怀陈戈

广东通信技术 2020年10期
关键词:分片播放器客户端

[黄润怀 陈戈]

1 现有MP4文件播放方法概述

MP4文件格式是目前各大影音网站使用的主流格式,客户端从服务器逐步获取MP4文件并进行播放。MP4文件有一个最重要的组成部分称为MP4BOX,MP4BOX中不包含具体媒体数据,但包含MP4文件中所有媒体数据的宏观描述信息,记录了创建时间、修改时间、时间度量标尺、可播放时长等,以及文件中每个媒体轨道的具体信息。MP4文件需要通过配合MP4BOX中的信息才能够进行播放。

在现有技术中,播放器要播放一个MP4格式的内容,就首先需要下载MP4BOX,只有下载完MP4BOX后,才能获得播放的必要信息,播放器播放启动等待时间长。为优化MP4播放等待时长问题,业界在编码时,即对MP4BOX进行优化,如把MP4切成小分片,每个小分片有一个MP4BOX,或直接使用DASH等MP4分片新格式。

对于CDN已经存储的海量MP4文件而言,对其进行重编码和重新注入是一件极为费时费力的工作。本文提出了一种CDN存量MP4视频播放优化方法,并在实际应用取得了较好的效果。

2 CDN虚拟分片方案

为优化CDN MP4存量内容的播放速度,可在现有MP4文件的基本上为其增加相应索引,如图1所示。

图1 CDN对MP4文件虚拟分片的交互架构

CDN扫描存量的MP4文件,并成生一个外部索引文件头,其中,MP4文件被虚拟切分为多个分片,索引文件头包括各个分片的分片文件头索引。播放器可根据分片文件头索引获取分片文件头,并根据分片文件头获取并播放分片。

分片文件头索引为分片文件头的地址索引或存储分片文件头地址的路径索引。为支持拖动、快进等损伤,索引文件头还包括各分片的时间范围,播放器在响应用户的拖动操作时,根据分片文件头索引确定拖动位置所在的分片,并向CDN服务器发送获取分片请求,获取分片请求包含对应分片和用户拖动位置信息的请求。

MP4索引文件头可以是Json格式的文件,索引文件头中可以包含表1所示的关键字。

表1 MP4索引文件头信息

根据索引文件头中的URL信息可以得到分片文件头的地址。分片文件头可以与MP4文件分片分离存储,同一个MP4文件的分片文件头可以存储在一起。同一个MP4文件的分片文件头以一个结构体与所有的分片文件头连续存储而成,其中存储在分片文件头之前的结构体的定义如下:

在结构体MP4ClipHeader中定义了分片的数目mdwClipCount,和与分片数目相等的MP4ClipInfo结构体。每个MP4ClipInfo结构体对应一个分片的分片文件头和分片内容信息,其中,mdwHeaderStartPos为分片头在头文件中的起始位置,mdwHeaderLength为分片头的长度,mllContentStartPos为分片内容在原始文件中的起始位置,mdwContentLength为分片内容的长度。

索引文件头中的分片文件头索引中包含MP4ClipHeader结构体的地址信息,由于每个MP4ClipInfo所占用空间相同,因此可以用MP4ClipInfo占用的空间×(分片序号-1)+4的计算式获得对应分片的MP4ClipInfo地址,从而获得对应分片文件头的地址,确定分片文件的地址。

3 业务流程与播放器升级

为支持虚拟MP4分片,播放器也需要进行升级,升级后的播放器需支持MP4虚拟分片的外部索引,并根据索引信息进行相应的播放操作。播放器支持的分片文件头索引内容简单,只需MP4ClipHeader结构体的地址信息、每个MP4ClipInfo所占用空间和分片序号即能计算得到分片文件头地址的存储路径。这种方式能够有效缩小索引文件头,简短客户端从服务器获取索引文件头的时间。

播放器访问虚拟分片的业务流程如图2所示。

图2 升级后的播放器访问虚拟分片的业务流程

如图2所示的业务流程,CDN可通过判断客户端的版本,为播放器提供不同的流服务。对于未升级不支持虚拟分片的播放器,CDN为其提供原有的流服务,对于已升级的播放器,CDN为其提供如图2所示的流服务。

CDN服务器接收到播放器获取分片请求消息之后的处理流程可以如图3所示。

如图3所示的CDN处理流程中可以看出,虚拟分片的处理工作,大部分交由了CDN来进行处理,播放器升级的地方很少。

服务器接收到客户端的获取分片请求后,服务器判断请求中是否含有查询字符串,如果不含查询字符串,判断该请求不是MP4分片请求;否则服务器解析请求,获取请求的分片序号。服务器计算请求的分片文件头的地址信息的存放位置。服务器读取分片文件头存储的地址信息。服务器根据分片文件头的地址读取分片文件头的内容。经过以上的步骤,服务器根据收到的获取分片请求读取到了分片文件头信息。

图3 CDN响应客户端的处理流程示意

服务器判断获取分片请求中是否含有定位信息。定位信息是用户拖动分片,并且拖动点不在分片的起始位置的标识,如果含有定位信息,则服务器读取原分片文件头和分片的信息,根据定位信息构造新的分片文件头。如果不含有定位信息,则服务器读取分片文件头对应的分片。对于请求中有定位信息的情况,服务器读取的是根据定位信息构造的新的分片。

服务器根据定位信息,计算新的分片的起始地址,构造新的分片。在MP4文件的分片为逻辑分片,分片文件头单独存储的情况下,新的分片的起始地址=原分片的起始地址+拖动位置的媒体内容在所处分片的相对地址;在MP4文件的分片与对应的分片文件头连续存储,且分片文件头存储在对应分片之前的情况下,新的分片的起始地址=原分片的起始地址+拖动位置的媒体内容在所处分片的相对地址-原分片的分片文件头长。

4 应用效果

本文方案由于无需对CDN存量内容进行重编码、重注入,同时,播放器升级改造简单,也兼容客户端不升级方案,因此,在实际应用中,大大提升了用户MP4视频的播放速度,取得了较好的应用效果。

猜你喜欢

分片播放器客户端
上下分片與詞的時空佈局
降低跨分片交易回滚概率的多轮验证方案
分片光滑边值问题的再生核方法
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
如何看待传统媒体新闻客户端的“断舍离”?
基于STM32的MP3播放器设计
基于模糊二分查找的帧分片算法设计与实现
Moon ACE播放器/放大器一体机
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略