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

本系列的前面贴子中,我们梳理了Netflix和YouTube在ABR方面的一些进展,本文将简要介绍一下编码优化领域的一位新贵—Beamr的技术动态。

Beamr是内容自适应视频编码与优化解决方案的提供商,致力于为MSO(Multi-System Operator,多系统运营商)和OTT(Over The Top,流媒体服务商)提供视频技术支持,如Hollywood studios以及视频分发平台等。该公司成立于2009年,总部在以色列特拉维夫,此外在Palo Alto (帕罗奥图,美国加州)以及St. Petersburg(圣彼得堡,俄罗斯)等地也有分部。Beamr于去年收购了H.264/H.265 编码厂商Vanguard Video,并获得了1500万美元的融资。之后通过将其特色的视频优化技术集成到Vanguard Video的编码器中,能够以较低的码率达到较高的编码质量。对于内容分发商而言,在给定码率下最大化视频质量是一直追求的目标,因此这类解决方案会受到视频服务商的关注。

近期,Beamr发布了质量驱动的内容自适应HEVC商业软件编码器,Beamr 5x。其宣称他们的HEVC视频输出码率节省能多达50%。Beamr 5x最核心的是其自主研发的内容感知优化技术,让我们来一探究竟。

1 Beamr的视频质量工具

编码失真是每个视频编码专业人员重点关注的对象。对于大部分互联网用户来说,当下能获得的视频码率平均在3Mbps左右。在这个码率下,规模化压缩视频文件时需要一套有效的度量工具或算法来检测和分析编码失真。

常用的视频质量评价指标是PSNR和SSIM,两者都是全参考图像质量评价模型。PSNR数学表示简洁,便于分析,但不能很好的反映视觉上失真。SSIM一定程度上反映了视觉感知特性,将图像质量降级作为图像结构信息的一种视觉偏移,其中包括了一些重要的感知细节,例如亮度以及对比度掩盖等,如下图所示。

图 1 SSIM计算流程

SSIM基于的假定是,像素之间具有较强的依赖性,这种依赖性包含了相邻帧或场景中物体的结构信息。简单而言,SSIM就是用于计算两幅图的结构相似度,取值范围在[0, 1]之间,SSIM值越接近于1,则区域x和y之间越相似,也即图像质量越高、失真越小。SSIM的提出相对传统指标PSNR而言是一重要进展,而PSNR被证明与人眼视觉特性并不相关。但SSIM本身并不是完美的,在某些场景下仍会估计错误。如图2所示,左图是原图像,右图是压缩之后的图像,左右两幅图在视觉上非常相近,但右图的PSNR和SSIM的计算结果并不高,显示两幅图差异较大。而MOS (mean opinon score) 主观打分结果显示两幅图差异很小。

Beamr开发了一套新的全参考质量评价工具,其官方宣传具有如下技术特点:1)经过大量训练,能够有效检测和刻画视频块编码失真;2)CPU资源的占用和消耗比较低;3)考虑了了视觉显著性及时域失真;4)与主观评价相关性高(见图2例子)。

图 2 几种视频质量评估工具的效果对比

质量评估工具也可用于调控视频的编码压缩(通过QP),使得编码器在保持视觉质量不变的情况下最大限度地压缩源视频。应用于编码时基本步骤是:首先对源视频进行正常编码,然后通过反映视觉失真的全参质量评价工具检测重建质量,接下来根据目标RD效率调整量化参数(+/-QP)重新编码,如图 3所示基本框架。

图 3 Beamr质量评估工具反馈编码过程

Beamr宣传其质量评估工具集成到编码器后,能够比目前标准兼容的基于块的编码器减少额外高达50%的码率,而不会影响图像视觉质量。这个做法非常类似于Netflix,采用VMAF对不同切片进行不同{码率,质量}的大规模编码组合,遍历寻找最优的编码控制点。

不过更理想的做法是内容自适应编码优化技术,将质量评估(Distortion)和编码器做紧耦合,实现RDO和码率控制,支持Frame级和CTU级别的操作。这方面难点在于反映视觉失真的计算模型往往是非线性和全局的,而编码的控制则是局部的和上下文因果关联的。因此需要multi-pass和 alternative 反复实验才能找到最优。这方面也是包括Beamr在内各家新锐公司的竞争力所在,很多核心技术没有披露细节(抑或本身就是玩神秘,拉估值用的)

2 Beamr Content Adaptive优化的一些公开信息

Beamr帧级别内容自适应编码优化技术,对打包封装前的H.264/H.265压缩码流进行二次编码,据称在不引入可察觉质量降级的情况下,能够平均节省25%的码率,并能够保持帧间图像质量平稳。图 4为一个范例,视觉质量保持相同,码率节省21%。

图 4 经过Beamr Video优化的视频流码率节省示例

如前文简述,Beamr Video的编码优化过程是一个迭代的闭环系统,它关注的是每一个编码后的帧与输入的帧在视觉感知下是否一致。在这个过程中,被压缩过的视频帧首先进行解码,然后使用更为有效的编码参数重新对其编码,从而得到一个比原来压缩程度更高的码流。具体而言,输入的帧先被解压缩,然后使用质量评估工具以源视频帧作为参考进行分析(如图 5所示)。这个分析过程还考虑了视频序列间的时域关系,使得相邻帧的视觉质量具有一致性。最后经过评估工具综合考量后得出一个分数,如果这个分数在一个预定的质量范围内,就通过这一帧,继而转向下一个输入帧。如果这个分数超过了上限阈值,意味着这一帧可以去除掉更多的比特,因此就会对这一帧进行深入压缩,然后重复上述评估过程,直到这个得分在目标范围内。相反,如果这个分数低于下限阈值,意味着这一帧不再和源视频帧具有相同的视觉质量,优化工具就会以轻度压缩的编码参数重新编码,直到该帧达到这个质量阈值。

图 5 Beamr Video视频分析过程示意图

Beamr Video目前以文件流的方式进行处理,但兼容和满足一些应用场景下的低延迟编码需求,而且提供直播流的优化支持。

总结起来,Beamr Video有以下几个特点值得关注:

1. 评估分析编码后的视频文件以选择合适的编码参数进行再次编码,整个过程自动化进行,不需要人为参与,满足大规模视频编码及分发传输应用需求。

2. 许多方案需要分析整个视频切片才能得到VBR或CBR的码率,不能以更小的粒度如根据场景或帧来做分析评估。该方案能到帧级别进行分析并选择合适的编码参数,可以为每一帧分配合适的比特数。

3. CRF(Constant Rate Factor)虽然在ABR中比较有效,但使用的信息有限,没有深入分析帧级别的内容特性,因而无法达到最佳的编码质量。此外,许多方案直接使用CRF作为VBR或CBR指导因子进行编码,没有后处理编码的质量验证过程。而如果没有这个闭环的话,最后编解码得到的视频可能会产生一定的视觉失真,而且质量会有波动,或者编码的码率超过了实际所需。

参考文献

1. Mark Donnigan. How the Magic of Beamr Beats SSIM and PSNR. [EB/OL]. http://blog.beamr.com/2017/03/07/how-the-magic-of-beamr-beats-ssim-and-psnr/ , 2017-3-7.

2. Beamr. Beamr Announces the Acquisition of Vanguard Video and a $15M Investment Round.[EB/OL].

https://www.prnewswire.com/news-releases/beamr-announces-the-acquisition-of-vanguard-video-and-a-15m-investment-round-300241962.html/ , 2016-3-29

3. Beamr, It’s Time To Modernize Your Encoding Profiles ,But How?.[EB/OL]

http://media2.beamrvideo.com/pdf/Beamr_Content_Adaptive_Tech_Guide.pdf , July 2016.

4. Beamr, Beamr Announces First of Kind HEVC Content-Adaptive Software Encoder.[EB/OL].

https://www.prnewswire.com/news-releases/beamr-announces-first-of-kind-hevc-content-adaptive-software-encoder-300440752.html?nsukey=PO%2FX4HCuUQ8z3%2B%2Fjr97ydMzBhSr0EpWa30h1rltkWElyr5%2FaA2aScdNW8oK5oy5fpYasVnQu9qnMZQIQ5hleO3RWWQfWFdDyDZmx%2F95Z1pjw1wQJn6TpDokpSRzP3ON3FtafK0vsrgVqvaR6WNojk6yAs3pJRRbHMB1Q5itcY5vMwxeStUZANUcjvUc0IKjizyca7Mw7mfhByXauaCVGzA%3D%3D , 2017-4-18

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

原文发表时间:2017-12-23

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏c#开发者

jquery easyui datagrid mvc server端分页排序筛选的实现

1自定义一个ModelBinder public class filterRule { public string field { g...

4179
来自专栏君赏技术博客

写了一个Swift版本的提示HUD 暂时没找到合适的可以用一下

灰常灰常感谢@地选之猿提出这篇文章代码已经不能使用。这个库是当时学 Swift 才写的已经属于 Swift2.0代码,现在已经修复完成。 因为之前的邮箱不能使...

623
来自专栏跟着阿笨一起玩NET

C#巧用Excel模版变成把Table打印出来

转载:http://blog.csdn.net/gwblue/article/details/38865525

1162
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

1985
来自专栏张善友的专栏

框架页面尽可以这么用(后置代码中控制框架)

下面是框架页: <%@ Page CodeBehind="Frameset.aspx.cs" Language="c#" AutoEventWireup="...

1796
来自专栏我和未来有约会

silverlight向服务器post数据类

using System; using System.Net; using System.Windows; using System.Windows.Co...

1955
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1161
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

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

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23510
来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2470

扫码关注云+社区