图片被压缩,有没有Av大神压缩影片遇到过

      本文整理自 Google 视频压缩核心算法组軟件工程师陈诚在 RTC 2018 实时互联网大会编解码技术专场上的演讲分享他在演讲中主要分享了 AV1 的研发现状,详细分享了 AV1 的编码算法、编码效果如有任何问题,欢迎留言提问

年,视频将会成为互联网产品的主要需求超过80%的互联网流量将会被视频占据。届时与视频相关的服務与需求将提升约50%,而其中对超高清的需求将提升约30%同时,互联网对直播和其它实时视频服务的需求将会是目前的15

如此快速的发展囷快速增长的需求,正是互联网公司推动新一代视频编解码技术的动力

新一代编解码技术 AV1 已于20186月定稿,它有四个特点:

1AV1 是一个开源、免费的生态系统开放媒体联盟(AOM)的成员都将支持 AV1

2AOMAV1 准备了资金进行法律方面的援助和专利保护

3AV1 相对于前一代产品使用了更前沿嘚编码技术,并取得了较好的压缩效率

4、在 AOM 的合作框架内为 AV1 提供了合作开放的环境

有三个特点:PerformancePlatformPotentialAOM 的框架使得 AV1 ,以及未来视频的发展嘟更有活力尽管 AV1 目前还处于研发和推广初期,我们相信它在业界的广大支持下会获得比 VP9 更广泛的应用。

开源媒体联盟 AOMGoogle、亚马逊、思科等公司联合牵头成立致力于推广和研发多媒体的视频编解码技术。除了当前与视频行业紧密相连的互联网公司外该联盟内还有硬件設备厂商、内容供应商、主流浏览器厂商等。最近苹果也加入了 AOM业界的生态系统也都将支持

AV1 工作组共有四个:软件研发组、硬件研发组、Tapas 组、测试组。软件和硬件研发组联合进行 AV1 的研发同时测试组会对 AV1 的一致性进行检测。而 Tapas 组则进行专利审核并提供法律问题咨询。

AV1 的研发组是个很有活力的社区在整个 AV1 的研发过程中,已经发表超过15篇学术论文约有 100 多个研发提案被 AV1 采用。目前大家可以在网上下载到参栲代码大约有30万行代码,并且平均每天会有15个代码被提交上来

AV1 从研发到推广,将会分为四个阶段:

第一阶段标准的研发与制定

第二階段,桌面浏览器对解码的支持

第三阶段推广 AV1 在更多硬件与软件的支持

第四阶段,在 AOM 生态系统中支持 AV1 的软硬件编码 

2015年的研发开始到20186月的定稿,我们已经完成了第一阶段的目标目前,我们正处于第二阶段GoogleChrome 浏览器上已经实现了软件解码。在未来的第三、第四阶段Φ我们的主要任务就是硬件设备与内容供应商对 AV1 的支持。预计2020AV1 将获得更广泛的应用

二、AV1 的编码与算法

与其它视频编码软件相似,AV1 的吔分为一系列连续的模块包括分割、预测、变换、量化、熵编码、环内滤波等。在单元块划分上AV1 支持更多的划分模式和更大的划分块。其前身 VP9 支持最大划分块为 64x64对每个方块可以递归地进行四个子块的划分。AV1 支持最大划分块为 128x128对方块递归的划分有10种类型,最小的划分塊为 4x4 

预测模式分为帧间预测和帧内预测。在帧内预测主要包含了四个主要工具:

1、支持更多多种的预测模式

2、支持从亮度值预测色度值

AV1 支持56个方向的预测利用当前块的上边界和左边界,重建的图像通过方向的差值来预测当前块的像素值。它的角度的表达方式是从8个主偠的差值方向中选择其中之一,并用一个 Delta 值来确定精确的角度

除了方向的预测之外,AV1还支持其它的方式对单个像素或当前渐变块生成預测如下图所示,有四种不同的差值方法对当前值进行预测当前值P将会由深蓝色模块的像素差值获得。值得一提的是另外一种递归嘚方式对渐变块进行预测,利用滤波的方式递归地对每个像素值进行预测在编解码方面复杂度会有所提升。 

从亮度值预测色度值的工具它利用了视频图像当中亮度值通道与色度值通道具有高度相似性的特点,通过选择适当的参数再以重建亮度值通道来预测色度值这个笁具对于游戏视频具有很好的压缩效果。

调色板模式将块内的元素当做几种离散的颜色不同于直接传输像素本身的参数值,而是通过传輸色块的颜色编号实现压缩的目的AV1支持从8×864×64的块,支持调色板模式编码器会自动根据视频内容选择是否使用调色板模式,如图所礻的例子左边是一个当前模块被划分成了3种不同的颜色块,根据波前的方式逐个编码块内的方块它的左侧和上侧的颜色信号将作为信息在熵编码中被使用。调色板模式对于当前块有单一色调的场景十分有用一般这种场景出现在屏幕内容的压缩当中。

另一个对于屏幕内嫆压缩很重要的工具叫做帧内拷贝它的工作原理就是,在预测当前块时它会去搜索当前帧已重建的图像部分比如下图1中第二个字母 A 和苐三个字母 A,它将找到第一个已经被编码的字母A预测块它的预测会非常准确,可以达到提高压缩效率的目的图形中包含了非常多的字毋,就会通过帧内拷贝的模式搜索到非常好的预测效果大大提高了视频压缩效率,仅这幅图来说压缩效率就提升了 50%

帧间的压缩工具仳帧内的压缩工具更丰富AV1VP9 在参考帧的数量和结构上有了进一步的优化,支持8个参考帧并能够使用其中的7个参考帧进行预测,而 VP9 只使鼡了其中三个AV1 还支持分层结构进行双向预测。 

在现在的视频压缩标准中运动估计在比特率中占有很大一部分,运动的估计一般通过搜尋一个运动向量找到参考帧中对应的块对当前块进行预测在 AV1 里我们采用了一种方法叫做运动场投影的方法来获取运动向量,它的工作原悝是通过当前帧的两个参考帧并且找到参考帧的对应参考帧获得一个运动轨迹,将运动轨迹投影到当前来帧获得两个运动向量当物体昰线性运动时,这两个运动向量将能很好预测到物体的运动轨迹并获得更精准的预测,从而帮我们获得更好的压缩效果 

在我们有了这些运动向量之后,我们还需要传输它们而在现有视频标准中,传输运动向量已经占据了很大的比例所以我们 AV1 中采取了一种叫做动态运動向量索引的方法,它不直接传输运动向量的具体坐标值而是传输它在运动列表中的序号,然后通过查询得知所用的运动向量运动向量通过运动场投影的方式获得并加入到运动列表中。我们通过运动估计的测算将运动列表的向量值进行排序再通过编码器选择对好的序號传输给解码器。

现在的视频压缩标准都支持双向预测当我们有了两个参考帧之后如何把它们融合在一起生成预测块是值得探讨的问题。AV1 在这个方面支持了多种不同的方式来生成预测块包括平均值运动补偿、加权运动补偿、楔形分割预测等。 

运动块补偿早在 H.263 时代就被提絀在这里被 AV1 采用。它的原理是利用平滑滤波的方式将两个运动补偿块重叠在一起特点是能够消除运动的不连续性带来的影响,以此提高预测准确率双向预测中,我们可以通过调整两个预测快的权重来达到生成不同预测快的目的AV1 除了支持平均运动补偿,还会根据参考幀的距离来加权生成预测块特点是当一个参考帧距离现在帧非常近的时候它的预测准确度可能更会高,于是我们给予它更高的权重当叧一个参考帧距离比较远的时候我们会给予远处的参考帧一个更低的权重,权重并不直接通过比特流传输会通过传输序号的方式在预设置的表格里查询对应的权重。 

AV1 还支持楔形分割预测可以弥补方块运动补偿中无法准确模拟物体边界的缺点。楔形分割已经作为查表预存茬编解码器中通过编码器选择合适的最佳的楔形分割方式传输比特流来告知解码器。 

方块的运动补偿有一个很大的问题它无法模拟实際运动中的大量的卷曲和变换。AV1 采用了基于仿射变换的方块补偿来解决这个问题AV1 支持从帧到帧的全局变换,也支持块到块的局部变换 

茬变换处理方面,AV1 除了支持传统的 DCT还支持 ADSTfADSTIDT ,由于他们都是二维可分割的所以 AV1 共支持16种组合。同时AV1还支持多种尺寸的变换快,最夶为64x64最小为4x4,还支持长方形的变换块尺寸AV1 支持 DCT 是因为,它对自然信号具有近似最优解的压缩效果而当残差信号为单调变化时,那么 ADST 囷反向 ADST 会有很好的压缩效果全等变换对于视频是阶跃变换时,会有很好的压缩效果

相比 VP9AV1 增加了很多变换尺寸和变换类型这使得它嘚搜索空间大幅增加,编解码复杂度也有所提升 

的量化有了更大的灵活性,它的特殊的使用场景下具有很好的使用效果比如使用参数矩阵能够提升主观观测的质量。 

在熵编码方面AV1 使用了多符号算数编码,能有较高的吞吐量具备快速概率模型自适应的特点。 

在视频压縮技术中对变换后的系数矩阵的压缩和传输将占比特流的绝大部分,甚至超过50%AV1 里针对这个变换矩阵的传输使用了分层编码的方法,分層编码将使用两次扫描对当前块的矩阵进行压缩第一次扫描将会编码系数的绝对值,第二次编码将会编码系数的符号让我们用一个例孓来说明分层编码的过程。如下图所示左侧代表当前的系数矩阵和扫描的顺序,第一行表示第一次编码第一次编码从终止位置开始,逆扫描方向逐渐走向起始位置深黄色的块表示当前的像素值,浅黄色表示它能用到的周围的数值信息第二行表示第二次编码从起始位置开始一直到终止位置,第一次编码只编码系数的绝对值第二次编码将编码系数的符号。 

环内滤波是目前视频标准的必要组成部分AV1 除叻有传统的去区块滤波器,还增加了新工具比如约束方向增强滤波器(CDEF),还有帧超分辨率重建、环内重建滤波器以及电影颗粒胶片效果合成器。 

AV1 的去区块滤波器对 YUV 三个信号通道分别采用不同的滤波强度对 Y 通道,水平滤波和垂直滤波采用不同的滤波强度这个设計为去区块滤波增加了更多可优化的空间。 

约束方向增强滤波器(CDEF)应用在去区块滤波之后,对每一个8x8的块估计物体的方向并沿着物体方姠采用增强滤波。它能保留物体边缘的清晰度提升重建图像的质量。 

帧超分辨率重建应用在 CDEF 之后。它首先将图像沿着水平方向降采样只对低分辨率图像进行编码,在解码器升采样把低分率图像还原为原分辨率这个方法显著提升了低码率下的编解码的主观观测质量。 

環内重建滤波器是另一个重要的增强图像质量的后期处理方法。它包含了两种滤波器编码器从两者中选择其一。Wiener 滤波器采用可分离的對称设计自导向投影滤波器使用两个重建信号的线性组合来近似真实信号。编码器通过比较滤波结果选择合适的参数,并传输给解码器 

电影胶片颗粒效果合成,是针对高质量视频而设计的一个工具电影胶片的颗粒效果,很难用传统的视频压缩方法保留AV1 将颗粒效果匼成作为后期处理的步骤,对颗粒效果单独处理它的工作原理是将电影胶片颗粒效果在编码前从原视频中分离出来。分离后的图像进行普通编解码而颗粒效果在最后与解码后的图像合成为最终的输出视频。 

我们对比了 AV1VP9HEVC严谨地讲,我们对比的是这几种编码标准所使鼡的参考软件实现AV1 使用的参考软件实现是 LibaomVP9使用的是 LibvpxHEVC 使用的是 x265。我们的测试环境是 AWCY它是一个公开的测试集,包含了30多个从360p1080p 的测试視频文件测试条件固定 QP60帧。在这样的测试环境下我们可以看到

莫斯科国立大学每年也会进行编码器的效果测试,在他们的测试结果中AV1 取得了最佳的压缩效果,明显超越了 H.264H.265VP9 

我们都知道,现在的视频压缩标准用更高的编解码复杂度换取视频压缩效率的提升当然实際应用中我们不可能无限制提高编解码复杂度,那平衡点在哪里呢对于视频点播的公司而言 Netflix 给出了他们的回答。他们认为 AV1 的编解码复杂喥如果能控制在 VP94-10 倍,就可以应用于他们的产品中我们 AV1 的复杂度是多少呢?截止今年8月初我们对比了 AV1VP9 在速度 0 到速度 3 的编码复杂度。先解释一下速度 0 表示压缩效率最高,但速度最慢速度 3 反之。相比于 VP9AV1 在速度0VP970倍,在速度3则已经降低到10倍以内AOM 软件开发组正在進行AV1编解码的优化,这个数值也在不断下降 

AV1 当前的重要目标是编解码的优化,在编码端需要更多的 SIMD 代码支持还要重新设计编码,尤其昰降低在硬件端的复杂度在编码方面,我们需要加快编码速度我们需要更高效的分割算法,更优的滤波器类型、编码类型、运动估计算法等 

AV1 中,我们使用了很多机器学习算法它使得 AV1 能做出很多快速的决定,比如对搜寻方块划分的类型我们相信在接下来的工作中,更好的机器学习算法会有助于 AV1 视频编解码的加速我们在未来还将继续尝试其它新的视频压缩工具,比如光流的算法、基于机器学习的預测与合成的算法、基于机器学习的变换方法等相信在 AOM 的框架下,以及各个成员与整个生态系统的支持下AV1 在不久的将来会获得更广泛嘚应用。

观众AV1什么时候可以让所有人使用上

陈诚:目前 AV1 处于第二阶段,我们已经完成了标准的定稿以及浏览器软件解码的支持未来┅两年内会完成与硬件相关的设计与优化,预计在2020AOM 组织内的成员将都支持 AV1,那时任何人都可以使用到它

观众:我们很关心 AV1的性能问題。跟其它编码器相比在同样的质量条件下,压缩同样的内容能节省多少码率刚刚您已经提供了一些比较详细的数据。我有一个疑问印象中,在 Facebook 的测试中与 H.264进行对比,AV1能节省一半的码率我们知道 HEVCH.264 的比较也是提升了一半。从这个角度讲AV1H.265压缩比应该是相当的。泹从其它报告来看又显示 AV1 略胜于 H.265,但是数据略有浮动有的是20%,有的是40%您能提供一个比较权威的对比解读么?AV1到底比 H.265 强多少

陈诚:峩的说法仅是个人意见,无法作为官方解释来参考不同的测试环境会导致测试效果的不同。我认为有两方面的差异导致了结果不同首先是所使用的测试集,其次就是测试条件不同关于测试条件,AV1 的研发目前主要为互联网公司的视频点播提供压缩算法以 youtubeNetflix 来说,他们昰给一个固定的码流来进行压缩而AV1HEVC的对比是基于固定 QP 作为对比条件。AV1 的设计初衷是在一个固定码流下进行压缩并没有针对固定 QP 进行優化。这就导致了在很多的对比测试中AV1 看起来并没有比 HEVC 提升多少。我在解释是基于

2-->检测应用是否开启读取相册的权限

NSLog(@"摄像头已被禁用您可在设置应用程序中进行开启");

//获取选择的媒体类型

// 如果导出的状态为完成

//将数据大小格式转换为*Mb

4、委托方法中进行拍摄完毕的一些处理

//Asset 资源 可以是图片音频视频 //创建文件管理类 导出失败,删除已经导出的 //设置输出文件的类型 //开辟子线程处理耗时操作

在视频拍摄的时候囿个参数是来设置拍摄质量的三种取值UIImagePickerControllerQualityTypeHigh,MediumLow,但是经过测试发现这三个参数对拍摄效果并无多大影响压缩的时候也有一个参数三个取徝(针对iPhone的只有三个,还有针对其它设备的不同分辨率如640*480等但是他们并不适用于iPhone,还有一些针对PC的)这三个取值分别是AVAssetExportPresetMediumQualityHighest,Low其中Highest与Medium自峩感觉并多大差异,清晰度相当压缩后的文件大小也几乎一样,但是Low要小的多一分中的视频如果用Medium(或Highest)大小是5M多点,如果是Low则为600KB左祐但是Low要相对模糊许多。一般选取Medium即可

6、获取视频大小和时长

}此方法可以获取文件的大小,返回的是单位是KB }此方法可以获取视频文件的时长。

我要回帖

更多关于 Av大神压缩影片 的文章

 

随机推荐