【视频编码】 Content Aware ABR技术(十一)

在本系列前面的帖子中,我们连续梳理了Netflix、YouTube、Beamr、EuclidIQ、Bitmovin、Harmonic、V-Nova、Cisco、MediaMelon及AWS Elemental在CAE (Content Aware Encoding) for ABR领域的一些进展,本文将简要介绍一下编码优化领域的另一位成员 — Mux在这方面的技术动态。

什么是自适应比特率?

自适应比特率(ABR)流媒体是目前在线视频业务的关键技术。由于不同用户的带宽和设备差异很大,因此无法将同一个视频码流数据发送给所有用户(并非每个用户都有8Mbps的可用带宽来观看1080p视频,而且有些设备不支持1080p)。十年前通常采用的策略是让用户自己选择合适的视频流,如YouTube播放器中的质量选择器(下图左):

但这种方法表现不佳,因为用户并不总是知道他们可以播放什么样的视频而不会出现卡顿。 但ABR技术可通过让视频播放器根据用户端可用带宽和设备分辨率等因素自动决定要使用的播放格式来解决此问题。如果带宽状况较好,视频播放器可以选择播放更高质量的节目。如果带宽降低,播放器可以自动切换到较低质量的节目。例如,YouTube播放器上的“自动”选项设置(上图右)。

通常,编码时选择的分辨率和比特率称为比特率阶梯(bitrate ladder)。Apple提供了一种常用的分辨率比特率组合阶梯,作为其iOS设备视频编码推荐配置的一部分。下表是Apple推荐的静态(或固定)比特率阶梯。其中,第一列是推荐的分辨率,第二列是推荐的比特率,第三列是推荐的帧率。

静态的比特率阶梯其实是比较低效的。原因在于,不同视频内容在复杂度方面差异很大,因此针对不同类型的视频所采用的编码配置需要作出相应的调整。例如,家庭剧、动作片、游戏节目和足球比赛等需要完全不同的编码配置。此外,即使是对于同一类型的视频也可能会需要截然不同的编码配置。 什么是Per-Title Encoding?

如上所述,实际中如果对每个同类型的输入视频使用相同的比特率和分辨率配置,编码效率会很糟糕。在2015年,Netflix率先推出了Per-Title Encoding编码方案。其主要处理步骤如下: 1. 使用不同的比特率和分辨率组合对每个输入视频进行数十次测试编码 2. 采用新的质量测量工具(VMAF)对编码结果进行评估比较 3. 根据用户实际网络带宽和设备状况,选择最优的比特率和分辨率组合以提供最佳的视觉质量

Netflix以不同比特率和分辨率组合对输入视频进行编码测试,以便在比特率集合中的每个点上找到对应的比较合适的分辨率大小。对于一个视频,在1Mbps带宽下,最好的质量可能在编成720p时达到。类似地,对于其他视频,在相同的带宽下,360p或1080p可能会更好。可以预计这样做会有一定的提升效果。Netflix预估使用该方法后比特率可以降低20%(30%,如果能达到per-scene级优化)。较低的比特率意味着用户可以获得更佳的视觉质量、更快的启动时间(startup time)和更少的重新缓冲(rebuffering)。同时,可以减少流媒体成本开销。有关Netflix Per-Title Encoding的细节详见本系列之前的帖子。

这种方法在实际中确实取得了一定的效果,但也存在一些问题。Netflix提出的这种方法需要对工程时间和视频编码团队进行重大投资。大多数公司没有一个非常专业的视频编码专家团队,他们可能需要花费几个月的时间来构建Per-Title Encoding编码优化系统。在资源开销方面,Netflix的这种编码方式要比普通方法消耗20倍左右的资源成本。此外,Per-Title Encoding编码优化处理过程比较缓慢。使用标准方法进行完整的Per-Title Encoding编码优化需要几个小时。

目前,Mux 推出的Instant Per-Title Encoding编码技术改变了这一状况,可以在较短的时间内为每个输入视频提供较好的per-title ABR编码配置组合。下面将简要介绍Mux 的Instant Per-Title Encoding编码优化技术。 Instant Per-Title Encoding

解决上述这些问题的方法是利用机器学习。视频基础架构服务公司Mux(包含Mux Data和Mux Video等产品服务)在今年四月份宣布推出了Instant Per-Title Encoding编码优化技术。该技术提供了一种基于AI的视频编码方法,通过利用神经网络的强大功能,Instant Per-Title Encoding宣称能够最快在毫秒级的时间内为输入视频创建单独的自适应编码配置阶梯(encoding ladders)。Mux 的Instant Per-Title Encoding编码优化技术宣称相比其他Per-Title Encoding编码方法可将编码后的视频文件大小减少多达30%,视频质量提高约15%,有效降低各类成本开销,处理速度加快至少1000倍(数据来源于官网介绍)。对于Mux Video而言,这个处理速度至关重要,它使用的即时转码工具可以在数秒内发布新的视频流,而传统的Per-Title Encoding编码优化的方法通常需要几个小时的处理时间。

目前,视频数据已占网络流量的70%左右,而且到2021年在线视频数据流量预计将翻一番。随着互联网技术的发展和智能移动终端的普及,高性能的视频压缩技术变得越来越重要。Accel Partners的风险投资家Daniel Levine表示:“由于成本和复杂度的原因,到目前为止Netflix之前提出的Per-Title Encoding编码方案已经远远不能满足视频服务提供商的需求。目前利用机器学习的方法使得Per-Title Encoding编码方案适用于大规模视频编码处理是备受青睐的。”

Mux的联合创始人兼首席执行官 Jon Dahl表示,“Per-Title Encoding编码是过去几年视频编码应用领域比较重要的进展之一,我们所推出的Instant Per-Title Encoding成为了Per-Title Encoding编码方案第一个真正意义上对视频进行实时编码处理的方法。目前,观看视频已经是大多数网络用户上网的首要选项,因此高效实时的视频编码技术具有非常重要的意义。”

对于Instant Per-Title Encoding,Mux创建了数以万计的编码测试集,以便找到质量、比特率和分辨率的凸包。然后在这个数据集上训练了一系列神经网络。当一个新的视频输入到Mux Video时,它会通过AI模型进行快速分析,并输出最佳的编码阶梯。那么Instant Per-Title Encoding的AI模型准确度如何呢?Mux已经在该模型上测试了一些新的视频集,结果显示要比Apple的静态比特率阶梯更加准确。随着输入到训练模型的视频越来越多,模型精度和编码质量也会越来越高。

Instant Per-Title Encoding的处理步骤

Instant Per-Title Encoding编码通常由两个步骤组成:预测步骤和训练步骤。

第一步,每当有新视频输入Mux Video时,Instant Per-Title Encoding编码工具会提取一组视频帧作为一个序列并解码为RGB arrays。这些RGB arrays之后会送入Mux的基于AI的凸包生成器(convex hull generator)- Halfpipe。Halfpipe主要通过一个多层神经网络将这些帧数据进行处理,输出其per-title比特率配置阶梯,该配置遵循对应的最优分辨率、比特率和质量的凸包。所有这些处理操作都能最快在毫秒级的时间内完成,这意味着在Mux Video读入新视频时可以同步进行内容自适应编码处理。

第二步,输入到Mux Video中的新视频将会被用作训练集数据。Mux Video会对之前未接触过的具有新特性的视频应用完整的、高质量的Per-Title Encoding编码过程,并在此结果上训练Halfpipe模型。这意味着Mux的Instant Per-Title Encoding编码系统会随着时间的推移性能会变得更好,并能自动适应它所处理的视频内容。 测试结果

Mux使用Instant Per-Title Encoding在三个视频评估集上进行测试运行,并比较了基于AI的结果与实际测试得到的凸包的接近程度。其中,“Trailers”数据集由31个较短的电影预告片组成,“Broadcast”数据集是由4个较长的广播电视节目的片段组成,“Xiph”数据集是由Xiph.org Video Test Media [derf’s collection](https://media.xiph.org/video/derf/)的9个视频片段组成。根据Apple推荐的静态比特率配置阶梯,每个视频片段会被编码8次得到8种码率版本,总共有352个编码输出。以下两个表分别给出了Instant Per-Title Encoding和Static bitrate ladder各自得到的凸包与真正凸包的接近程度,以及两者编码质量的比较。可以看出,Mux Instant Per-Title Encoding的测试结果明显更好。 Root Mean Square Error: Mux and Static vs. full convex hull (lower is better)

Mux vs. Static: Quality (in VMAF)

随着时间的推移,测试结果会有一定的提高。在没有输入“Broadcast”数据集中的任何视频内容之前,AI方法的RMSE为0.73,比静态比特率阶梯的结果(0.94)好一些,但没有达到2倍。然而在读入“Broadcast”视频的几分钟后,RMSE下降到了0.50。随着更多训练数据的加入,可以预期Halfpipe的输出能够接近真正的凸包。

从以上结果的分析中可以知道,与使用静态比特率阶梯编码的视频相比,Instant Per-Title Encoding编码的视频效果更佳,并且为每个输入视频都能提供此优化。由于Instant Per-Title Encoding的优化几乎是实时的,Mux Video可以以更快的速度发布大多数视频(minutes of video in seconds, hours of video in minutes)。除了对视觉质量的提升外,也会影响流媒体传输性能的其他因素,如重新缓冲、启动时间等。由于 per-title optimization可以在较低比特率下获得更好的质量,加上视频加载速度更快、播放不会出现停顿,因而视频观看的整体体验会更佳。 关于Mux

Mux是一家为在线视频的开发者和发布者开发基础架构和监控工具的软件公司,总部位于加州旧金山。Mux最初由一些在线视频方面的专家于2015年创立,其中不乏互联网Web端最大的开源视频播放器(Video.js)、最大的视频云转码服务(Zencoder)以及视频技术工程师社区(Demuxed)的创建者和技术开发人员。Mux Data是Mux推出的一种QoE分析工具,可以衡量对用户观看体验有实际影响的视频性能指标,包括重新缓冲、启动时间、视频质量和解码错误等。Mux Data通过仪表板可以显示出一些重要的特征数据,包括性能分数,基于机器学习的预警以及对视频源的深入分析等功能。Mux Video是一种数据驱动的视频托管和流媒体API,由Mux Data提供支持,可针对大多数终端设备和网络带宽状况创建合适的视频格式,并为视频流提供实时性能分析。 参考资料 http://www.streamingmedia.com/PressRelease/Mux-Launches-Instant-Per-Title-Encoding-Improving-Video-Quality-For-Everyone_47002.aspx https://medium.com/netflix-techblog/per-title-encode-optimization-7e99442b62a2 https://mux.com/blog/instant-per-title-encoding/ https://mux.com/per-title-encoding/ http://www.streamingmedia.com/Sourcebook/Mux-6056.aspx

原文发布于微信公众号 - 媒矿工厂(media_tech)

原文发表时间:2018-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

JS面向对象概述

这部分内容还是比较难理解的,像借用构造函数这种方法,实际工作中还是很常见的,不过对于后面的寄生理解还有点困难,只能慢慢学习了。 思维导图 ?

2215
来自专栏腾讯移动品质中心TMQ的专栏

代码质量与技术债

我们可以通过各种类型的检测手段来给出其质量高低的度量。但是,如果直接拿出一段源代码放在我们面前,问这段代码的质量好坏时,我们又该如何作答呢?

6114
来自专栏QQ会员技术团队的专栏

小兴逛Google I/O 2017(day3实况)

作者介绍:陈志兴,Google I/O 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心Android组leader,主要负责手Q个性化业务、手Q...

20710
来自专栏分子生物和分子模拟计算

利用Chimera进行简单快速的MD

1422
来自专栏互扯程序

2018,如何从小白升级到大牛程序员呢?

写在前面 2017已经悄悄的走了,2018也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来。俗话说一年之计在于春,虽说距立春还有一个多月,我觉...

2395
来自专栏数据科学与人工智能

推荐系统设计方法论

一、前言 结合目前已存在的商品推荐设计(如淘宝、京东等),推荐系统主要包含系统推荐和个性化推荐两个模块。 系统推荐: 根据大众行为的推荐引擎,对每个用户都给出同...

4438
来自专栏新智元

【通用人工智能的新宇宙】OpenAI 重磅发布AGI测试训练平台Universe

【新智元导读】OpenAI 昨天发布 OpenAI Universe, 根据其官方博客的介绍,这是一个能在几乎所有环境中衡量和训练 AI 通用智能水平的开源平台...

3777
来自专栏悦思悦读

一天开发一款聊天机器人

“想不想开发一款自己的聊天机器人?” “我也可以吗?神马AI,机器学习,DNN……我都不懂啊” “没关系,其实真的没有那么复杂——掌握方法和工具的话,一天时间...

57210
来自专栏机器人网

【回顾】2017年最受欢迎的十大机器学习Python库

2017 年即将结束,又到了总结的时刻。本文作者把范围限定为机器学习,盘点了 2017 年以来最受欢迎的十大 Python 库;同时在这十个非常流行与强大的 P...

3128
来自专栏专知

【书籍】深度学习框架:PyTorch入门与实践(附代码)

【导读】2016年是属于TensorFlow的一年,凭借谷歌的大力推广,TensorFlow占据了各大媒体的头条。2017年年初,PyTorch的横空出世吸引了...

1.2K6

扫码关注云+社区

领取腾讯云代金券