技术解码 | 玩转视频播放,自适应码流技术

用户头像
腾讯云视频云
关注
发布于: 2020 年 10 月 10 日
技术解码 | 玩转视频播放,自适应码流技术

随着泛娱乐行业的兴起,音视频服务已经逐渐成为人们生活不可或缺的部分,Cisco Study指出截止2019年,音视频已经占据了互联网上80%以上的流量。

Statista 对 2017-2022 年的全球音视频流量进行了预估,结果表明在未来的 2-3年内视频产业将继续保持强劲的增长趋势。在如此巨大的流量下,各视频厂商也在积极探索视频产业的盈利模式,视频在线观看的用户体验逐渐成为视频行业差异化的一个关键点,在保证优质视频内容的同时提供良好的观看体验,将有利于提高用户粘性,从而获取更高的收益。

图片:Global mobile video traffic from 2017 to 2022



腾讯视频云点播团队深耕视频点播类解决方案,目的在于让开发者易于集成强大的视频播放能力、甚至无需开发就可以享用腾讯云完整的基础建设能力,有效提升视频播放时的用户体验。



针对视频播放的各种问题,云点播团队提出了自适应码流+视频播放器的一体化方案,有效解决“视频起播的时间过长”、“视频播放画面质量低“和”视频播放容易频繁卡顿“等问题。







自适应码流,是一种将视频内容制作成多种分辨率版本,然后终端播放器自动选择版本播放的技术。



如图所示,内容服务器在提供视频内容之前,预先将视频转成了流畅、标清、高清等多种分辨率的版本。播放器播放视频时,将首先播放分辨率最低的视频,随后播放器根据当前网络的带宽情况,在播放过程中切换到其他分辨率的版本,当网络带宽充足时使用高分辨率版本,而当网络较差时,使用低分辨率的版本。



自适应码流技术的应用,为视频播放带来了如下高质量的体验:

1.  秒开:视频从低分辨率的视频开始播放,因此加载出首帧画面消耗的时间较少,达到秒开;

2.  高清:自适应码流通常包含不同分辨率的规格,在网络条件好的播放器会选择清晰度更高的规格播放。

3.  无卡顿:播放器会根据网络条件,向上或向下切换不同清晰度的规格,防止弱网络环境播放高清视频产生的卡顿;同时,不同分辨率规格的视频因为做了 IDR 帧对齐,切换过程中也不会产生卡顿。





自适应码流技术,关键主要在于两点:

  1. 如何描述一个视频有哪些分辨率的版本,每种版本所需要的网络条件是什么;

  2. 播放器如何根据当前的网络条件,决定是否切换,以及切换到哪个分辨率的版本。

以 HLS 为例,使用 master playlist 索引一个视频不同分辨率的版本。如上图所示,视频一共包含了3种不同的版本,分辨率分别是 426x240,852x480 和 1280x720。BANDWIDTH 表示了该版本对应的码率,分辨率越高的的版本,码率也越大。

播放器在切换不同分辨率规格的策略,依赖于其采取的码率自适应算法。主要的码率自适应算法有:基于带宽预测的算法、基于 buffer 的算法,以及混合带宽预测和 buffer 的算法。





基于带宽预测的算法,可以获得一个预测的视频码率,播放器选择一个不高于预测带宽的视频进行播放。预测的方法是:以当前时间之前的固定时间段的样本(k1,k2)作为参考,计算调和平均值(倒数的平均的倒数),作为预测的视频码率(p1)。该算法仅基于历史的样本预测带宽,准确性不佳。



基于 buffer 的算法,则放弃直接的带宽预测,用 buffer 驱动码率选择,buffer 大则选择高码率,否则选择低码率。但是这里潜在的问题是,当播放器的 buffer 发生变化时,可能造成不同分辨率规格的视频频繁切换。



目前主流的码率自适应算法,是混合带宽预测和 buffer 的算法,即以带宽预测为主,buffer 为辅,该算法结合了带宽预测和 buffer 两种算法的优势。



行业中的几种主要的自适应码流协议,除了 Apple 的 HLS 之外,还有 Google 的 DASH,Adobe 的 HDS,以及 Microsoft 的 Smooth(后两种实际上已经逐渐被 DASH 替代,即 HLS 和 DASH 成为自适应码流协议的两大阵营)。对比 HLS 和 DASH:



HLS(apple 私有):视频格式为 ts,索引文件为 m3u8,单码率采用一级索引,多码率采用二级索引;

DASH(ISO标准):视频格式为 fmp4(也宣称支持ts),索引文件为 mpd,只包含一级索引。



根据统计,HLS 在今年内占主导地位,但是人们更期待 DASH 的发展。





如前所述,自适应码流技术对于视频播放体验的提升是巨大的。然而,若视频内容服务提供商要自行集成自适应码流,主要有以下难点:

1. 需要 IDR 帧对齐

自适应码流中的多个分辨率版本,必须要求 IDR 帧对齐,否则播放器在切换不同分辨率的版本时,可能因为需要缓冲而产生卡顿。做 IDR 对齐,需要首先一个 IDR 帧的参照模板,然后在转码各个分辨率时采用相同的参照模板。这里的两个步骤实现起来难度较大。



2. 额外集成打包工具

转出自适应码流,不仅需要转出多种分辨率版本,还需要将各个版本进行打包,输出一个描述文件(对于 HLS 是 m3u8,对于 DASH 是 mpd)。这里,打包步骤还需要集成单独的打包工具(HLS 和 DASH 通常使用不同的打包工具),增加了额外的模块部署成本。



3. 搭建存储和加速资源

转出和播放自适应码流,分别需要搭建对应的存储资源和加速资源。如果选择自建,部署和运维成本将非常高。即使使用各个云厂商的对象存储和 CDN,也有不小的接入成本。



4. 定制播放的样式

播放器播放自适应码流时,通常需要个性化定制播放的样式。例如,在手动切换不同分辨率版本时,希望自定义命名各个版本。还可能希望定制视频起播时的封面,以及进度条预览缩略图的间隔等。如果为移动端和 Web 端的播放器分别实现这些自定义的能力,都有不小的难度。





针对自行集成自适应码流技术的难度过大的问题,云点播提供了从生产到播放的完整方案。



云点播提供的自适应码流集成流程如下:

1. 服务端上传:业务后台通过控制台、服务端 API 等方式,将视频上传到云点播。

2. 触发视频处理:上传视频的同时,指定转自适应码流。上传后,视频开始视频处理。

3. 转自适应码流并写入存储:视频转自适应码流后,输出的视频内容被写入到点播的存储中。

4. 更新媒资:转自适应码流的视频信息,被写入到媒资管理模块。

5. 请求下载地址:超级播放器指定要播放的视频 FileId 后,会从点播的播放服务获取视频的下载地址。

6. 下载内容:超级播放器通过下载地址,从点播 CDN 下载内容。

7. 播放:超级播放器开始播放自适应码流输出。



在云点播控制台,你只需要通过简单的界面按钮操作,即可根据预设的模板,对已上传的视频发起转自适应码流的操作。这里,你无需关心如何实现 IDR 对齐的细节,也不需要考虑如何对输出进行打包。视频转自适应码流后的文件,将被写入点播的存储中。



点播为你提供了 Android,iOS 和 Web 端的超级播放器 SDK。只需要 App 终端集成 SDK,即可轻松播放视频的自适应码流输出,并可以自由定制视频在播放器的播放样式。



视频行业正方兴未艾,视频内容也是互联网内容的主战场,如何在提供优质视频内容的前提下提高视频观看体验,也逐渐成为各大视频厂商关注的焦点。云点播推出了从视频生产到播放的完整方案,帮助您快速轻松地集成自适应码流+超级播放器,打造极速、高清的视频内容,为您的客户带来极致的播放体验。



关注我们,将获取更多视频技术干货、业务案例解析及音视频解决方案!



用户头像

腾讯云视频云

关注

还未添加个人签名 2020.09.10 加入

腾讯云视频云官号,提供最前沿的视频技术干货、业务案例解析以及音视频解决方案!

评论

发布
暂无评论
技术解码 | 玩转视频播放,自适应码流技术