移动云盘在线转码功能技术研究

2023-12-10 12:28梁春章
广东通信技术 2023年11期
关键词:鉴权格式文件转码

[梁春章]

1 引言

移动互联网的普及加速视频消费时长的增长,不限流量的资费套餐与移动视频消费习惯相互促进,消费者对VOD 的满意度高于Liner TV,这些视频内容快速增长,带来视频内容存储大容量诉求,促进移动云盘存储高速增长;这些增长对移动云盘转码提出更高的性能要求,面临如下挑战:

(1)多元化/大规模/高并发的点播业务提出更高的转码和加速需求。

(2)用户播放体验对低延迟的实时转码有高诉求。

(3)降低成本,提高效率,提升客户体验。

2 原架构及分析

移动云盘转码主要提供移动云盘业务的音频/视频在不同终端、网络环境下的多媒体转码及在线视频播放标准文件支撑。转码能力现网存在问题:

(1)转码音视频增量明显,现网资源无法满足至规划期。在移动云盘业务大发展背景下,文件转码处理压力逐日增大,并出现任务排队情况。

(2)现网资源类型无法支撑实时转码,存储使用规模大:现网资源为通用PC 服务器类型,对图像/视频转码支撑能力弱,仅能提供离线转码能力,转码后文件存储带来长期的云存储空间消耗,如图1 所示。

3 在线转码架构

3.1 在线转码播放架构

随着互联网和移动设备的普及,实时转码技术[1]变得至关重要。在线流媒体平台需要将高清视频转码为多种分辨率和编码格式,以适应不同设备和网络环境。

音视频转码技术[2]的历史经历了从基础的编码标准到高效的压缩算法、硬件加速以及实时转码的演变,业务流程如图2 所示。

图2 在线转码播放架构

3.2 在线转码播放关键技术

3.2.1 网络分发——HLS 协议

HLS 全拼是HTTP Live Streaming[3],是一个由苹果公司提出的基于HTTP 的流媒体网络传输协议。工作原理:把整个流分成一个个小的(标准是10 秒一个)基于HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (M3U8) playlist 文件,用于寻找可用的媒体流。与实时传输协议(RTP)不同,HLS只请求基本的HTTP 报文,可以穿过任何允许HTTP 数据通过的防火墙或者代理服务器。

(1)视频的封装TS 格式。

(2)视频的编码格式为H264,音频编码格式为MP3、AAC 或者AC-3。

(3)除了TS 格式视频文件本身,还定义了用来控制播放的M3U8 格式文件。

(4)HLS 使用的HTTP 协议传输数据,不会遇到被防火墙屏蔽的情况。

(5)HLS 基于无状态协议,客户端只是按照顺序使用下载存储在服务器的普通TS 格式文件,做负载均衡十分简单。

(6)由于服务器存在多个码率的海量小文件,对存储要求高。

(7)HLS 协议本身实现了码率自适应[4],不同带宽的设备可以自动切换到最适合自己码率的视频播放。

与业界主流传输协议相比,RTMP 协议不使用标准的HTTP 接口传输数据,在一些特殊的网络环境下可能被防火墙屏蔽掉;HLS 由于使用的HTTP 协议传输数据,HLS不会遇到被防火墙屏蔽的情况;HLS 协议本身实现了码率自适应,不同带宽的设备可以自动切换到最适合自己码率的视频播放[5]。通过音视频前N 秒预转码机制,弥补HLS 在加载时延的短板,如图3 所示。

图3 业界主流协议对比

结合上述因素,HLS 更适合移动云盘需求。

3.2.2 分布式转码——基于GPU 卡的并行转码

服务器收到用户播放请求,根据请求参数进行数据检索,如果有缓存直接返回缓存相关的播放数据,如果没有则请求实时转码服务器进行转码。

转码服务器读取源视频,根据播放参数将源视频快速分割成子视频分块并进行转码,向视频文件切片服务器集群分发任务,并生成相应的播放索引返回给用户。

并发执行的转码任务结果将缓存在服务器,或者按用户需求进行持久化存储。用户按照索引依次请求视频分块,按序播放;而当拖动时间轴时,云端会相应进行实时加速转码[6]和任务二次调度,降低用户播放卡顿。

与传统PC 转码服务器不同,GPU(图形处理单元)由于拥有大量的并行处理单元,其并行计算能力可以同时处理多个数据块,因此可以对音视频进行并行转码[7],例如同时对多个视频帧进行编码或解码,在视频编码中,帧间预测和帧内预测等步骤可以并行处理,从而实现更快的编码速度。GPU 的多核心结构使得同时处理多个块变得更加高效,并且,使用多个GPU 卡可以进一步提高转码性能,尤其在需要处理大量任务或大规模转码时。因此,在音视频转码中,GPU 可以用于加速编码和解码过程,从而大幅提高处理速度[8]。

3.3 在线转码播放流程

移动云盘客户端上传文件成功后,通过MQ 消息队列[9]通知在线转码平台,在线转码平台接收任务之后通过文件后缀来判断是在线转码处理还是离线转码处理;如果是MP4 格式,则根据设定比例来进行分发。

在线转码处理流程分为多个独立线程处理:

(1)接收MQ 线程将收到的MQ 进行分发判断并相应处理;

(2)下载线程查询未下载状态任务进行下载处理;

(3)提取信息线程查询未提取状态任务进行提取视频信息处理;

(4)MQ 通知查询未通知状态任务进行MQ 通知视频提取结果。

具体流程图如图4 所示。

图4 预处理流程图

移动云盘客户端通过主M3U8 格式文件地址发起HTTPS 请求主播放列表。在线转码平台处理流程为:通过CI 进行鉴权处理,鉴权不通过则返回宣传片主播放列表,鉴权通过则判断主播放列表是否存在,存在则返回主播放列表,不存在则通过CI 调用二阶段接口下载视频,再提取视频信息,生成主播放列表,最后返回主播放列表。

移动云盘客户端请求二级播放列表,在线转码平台处理流程为:判断二级播放列表是否存在,存在则返回二级播放列表,不存在则对视频进行转码处理,生成二级播放列表和TS 格式文件,最后返回二级播放列表。

移动云盘客户端请求TS 格式文件,在线转码平台处理流程为:判断TS 格式文件是否存在,存在则复制TS格式文件返回,不存在则返回空。

具体处理流程如图5 所示。

图5 在线转码播放流程图

3.4 离线与在线融合转码

服务器 GPU 资源是否足够,是根据转码路数进行判断,例如1 张 GPU 卡支持 10 路转码,但现在是一个视频同时转码 3 个分辨率,故 1 张卡只能同时转码 3 个视频,8 张卡能同时转码 24 个视频,当同时转码视频达到24*75%(可配置)=18 个时,就判断为 GPU 资源不足。

为了充分利用现有离线转码资源,降低在线转码GPU设备需求,移动云盘提出了离线与在线融合的转码播放架构。在原有的流程中引入了isForce 参数,当参数值为1且GPU 资源充足时再通过GPU 实时转码[10]。具体处理流程如图6 所示。

图6 离线转码调度至在线转码

客户端请求主播放列表,先解析出 ci 参数,通过 ci参数进行鉴权,鉴权不通过返回宣传片的主播放列表,鉴权通过判断主播放列表是否存在,如果存在则直接返回主播放列表,不存在则解析 M3U8 格式文件地址中是否有isForce 参数,如果没有该参数,则下载视频生成主播放列表返回,如果有该参数,判断该参数值是否为 1,不为 1返回 isForce 参数错误,并返回错误码 601,如果为 1,则判断服务器 GPU 资源是否足够,如果不足则返回 GPU 资源不足,并返回错误码 600,如果足够,则下载视频生成主播放列表返回。

3.5 应用效果分析

离线与在线转码融合后,移动云盘整体转码能力提升了3 倍,同时视频文件存储资源占用减少50%(原离线转码流程,每个需文件转码三份包括流畅、标清、高清,转码文件与原文件占比约1:1)。

4 结束语

如上所述,通过引入HLS 协议分发及GPU 硬件加速技术,同时融合原有的离线转码集群,移动云盘不但实现了实时转码,而且提高了转码播放速度,大大的提高了用户体验。

猜你喜欢
鉴权格式文件转码
视频转码技术在广播电视中的应用研究
使用“格式文件”将徕卡仪器数据导出成cass 格式的方法
基于Hadoop的流媒体转码系统设计
基于IPTV点播业务的视频分段式转码方案的研究与应用
编写徕卡TS02型全站仪格式文件的方法探索
基于Hadoop 的分布式视频转码方案
回归基础 到底什么是RAW格式文件?
移动网络用户频繁鉴权问题的优化方案探讨
基于Office Open XML格式文件的电子取证方法研究
基于小型核心网的LTE鉴权的一种新实现