作者:Nick Kraakman(原文链接)
翻译:刘通
我最近使用了一些VR平台(包括YouTube,Jaunt,Littlstar和三星VR)对比了编码设置。对比结果是,除了YouTube以外,所有上述其他平台都还在使用已经有14年历史的H.264/AVC编解码器,而不是使用更新、更高效的H.265/HEVC或者VP9编解码器,这就导致了这些平台会产生更大体积的文件以及更差的图像质量。是时候对比一下这些和其他高级编解码器的优缺点了,然后让我们来看一看视频编码的未来是什么样子的。
H.264有什么问题?
H.264经历过它的辉煌期。H.264的视频可以在几乎能想到的任何设备上流畅运行,因为它已经被发明很长时间了,并且有着很全面的硬件兼容能力。它还能很快的将视频编码成H.264格式的文件,节省你提前准备的时间。
但是,它之所以能够快速编码视频的原因也正是它为什么会产生特别大体积文件的原因:这个14岁的编解码的复杂性不高,使它可以快速的工作,但是也导致了压缩视频的效率不高。
除此之外,H.264不支持4K以上分辨率的视频,对于现在的360°立体工作流来说,通常上都是4096×4096分辨率的文件,而这就会出现问题,H.264根本不支持这些。所以说,下一代VR摄像头所承诺的6K和8K分辨率更不用说,当然也不能使用H.264。
最终,也是最重要的一点,H.264的图像质量不高。原本黑色的东西看起来是灰色的。并且当比特率很低的时候,编码结果会是一块一块的,这种问题很常见。
现在我们已经列举了这个经典编解码器的几大缺点,接下来让我们把目光转向更现代的编解码器。
H.264 + 1 = H.265
H.264的弟弟H.265经常也被称作HEVC,高效视频编解码器(High Efficiency Video Codec),在压缩效率上有极大的提升。事实上,HEVC文件在编码同一个视频时,相比H.264而言文件体积仅是后者的50%,但是可以获得相同的视觉质量!此外,颜色看起来更好,人为更改看上去更不明显,并且其支持上至8K(8192×4320)的分辨率。
这个理由就足以说服所有人都换用HEVC了对吧?!先不要过早下定论。
尽管HEVC有着不可思议的压缩率,这个编解码器暂时也没有被广泛支持,除了比较新的安卓设备以外(安卓在5.0及更新版本系统中支持HEVC),很多360°视频制造商使用HEVC来在三星Gear VR头盔上播放他们的视频内容。
HEVC还不被iOS设备所支持,而且在大多数PC上的表现都很差,也就意味着几乎不可能在其他设备上观看你的Gear VR的输出,除非将其拷贝在你的三星设备上。除此之外,你不能将HEVC编码的视频上传到YouTube上,因为YouTube还不支持这个输入格式。虽然说这项编解码器在2013年就发布了,但是芯片制造商现在才生产内置HEVC的硬件。
所以为什么这么一个出色的编解码器的市场适应时间会这么长呢?两个关键字:钱和专利。
硬件和/或软件的HEVC使用许可费用要比H.264的高出好多倍,所以很少有公司敢在100%确保HEVC将会作为新一代行业标准之前就投资如此多的金钱在其上面。
它的使用费超高的部分原因也是因为H.264只有一个专利池,而HEVC有两个专利池想要收取专利费。还有,多一个专利池不仅仅会花费更多的钱,还会让专利诉讼的风险大幅度增加,这是另一个大多数公司避免使用HEVC的原因。
另一个需要注意的是,像HEVC这样的新编解码器通常都会在压缩率和复杂性之间进行取舍,想要得到那么小的文件体积所需要付出的代价是更长的编码时间,以及在播放时所需的更大功率。
幸运的是,像英伟达这样的芯片制造商正在发布SDK来允许HEVC视频在编解码的过程中使用硬件加速,他们承诺这样可以大幅度的提高处理速度。但是只能够在具有英伟达GPU的设备上实现。但是,我还不能在具有英伟达1080Ti的手机上进行加速,所以到现在为止,这项性能提高只限于PC。英伟达硬件编码SDK还存在着一些bug,当你同时使用硬件加速编码和缩放分辨率时,HEVC不能对视频的高度进行正确的编码,这一点我在这篇文章中也提到了。
简而言之,HEVC是一个很出色的编解码器,但是不走运没有被广泛使用,它自身的某些特性阻止了它成为新一代的行业标准。
Google的营救措施
Google拥有YouTube,因为YouTube上有成千上万的视频,以下两个做法都会变得极为昂贵:
#1 以大体积的H.264文件格式进行推流
#2 或者支付超级贵的HEVC使用费
所以Google就想了:“我们有一大批聪明人在为我们工作,而且我们有大把大把的钞票,所以我们直接收购一个做压缩的小公司,然后自己做一个不需要花钱的编解码器就好了!”这就是Google在收购On2的时候所进行的内心活动,与他们自家的VP8编解码器一同,在2009年被Google以一亿六百万美金的价钱收购。
Google立即将此编解码器开源,并且希望它能够成为淘汰H.264的产品。不走运的是,H.264已经成为了行业标准,VP8还没有好到可以在行业中发起变革的地步。
但是这个编解码器一直在进步,并且其演化成了一个更新更强大的编解码器,VP9。当Netflix对比VP9和HEVC的时候,他们的结论是这两个编解码器在整体表现和压缩速度上都旗鼓相当,但是VP9在压缩比HD还大的视频文件上要更高一筹,这也是VP9可能非常适合用于高分辨率VR视频的原因。
除此之外,安卓设备从安卓4.4版本后就支持VP9(安卓从5.0后支持HEVC),这个编解码器是开源且免费的,而且它在PC上运行极为流畅,我们在笔记本电脑的Chrome浏览器上甚至可以以60fps的速度播放4096×4096的视频,且没有任何卡顿。但是在同一台设备上都不能以30fps的速度播放3840×2160的HEVC视频。
PS:为了得到最优的质量体积比,建议你以不同比特率对你的视频进行编码。但是多大的比特率是最合适的呢?
在进行了多到数不过来的实验之后,我们决定对于VP9或者HEVC视频,30fps速度的3840×2160视频的目标比特率定位15Mbit。当我们将分辨率翻倍,我们也将比特率翻倍,如果我们也将帧速率翻倍的话,就再在此基础上增加50%的比特率。
下面是结果:
·3840×3840@30:15Mbit
·3840×3840@60:22Mbit
·4096×4096@30: 30Mbit
·4096×4096@60: 45Mbit
因为我们用了多种比特率,所以输出视频的实际比特率经常会比我们所设的目标比特率稍微的高/低一点。
VP9甚至支持透明视频,这是我们如何可以在下面这段视频中加入这些效果的原因:
(点击图片跳转链接)
所以如果VP9真的这么好的话,为什么不是所有人都在使用它呢?实话实说,我也想不明白为什么。我能想到的唯一一个原因是,所有人都知道H.264,所以H.265/HEVC可能看上去更像一个逻辑上的成功者。我觉得很有可能除了Netflix,并没有太多公司给了VP9真正的机会。
当然VP9也有它的缺点。举个例子,有些视频播放器,比如VLC,不能流畅的播放VP9,其他基于FFplay的播放器,比如MPC-VC就没有这个问题。将一段视频编码成VP9也比较慢,甚至与HEVC相比,由于没有任何硬件加速编码可供VP9使用所以会更慢一些。
最后一个小小的不足,你目前可以上传VP9视频到YouTube上,但是因为还不能将360大数据加入到一个VP9文件中,所以还不能使用它上传360视频到YouTube上。我已经给Google提供了一个解决办法,希望他们可以尽快使用。
总而言之,VP9可以提供与HEVC一样的压缩和整体表现,但是前者在移动端和PC端上都可以更流畅的运行。最大的优点是,这个编解码器是可以免费使用的,没有使用费和专利费,所以我希望硬件加速编码可以尽早在VP9上实现。
他们为什么不换呢?
我们刚刚讨论了虽然老旧但是仍然被广泛使用的H.264编解码器,以及更先进的编解码器如HEVC和VP9是如何可以用更低的比特率提供更高的图像质量的,可以允许处在较慢网络环境下的人们可以推流4K视频。所以既然有这么多优点,为什么没有更多的人改用这些高级的编解码器呢?我认为这是因为H.264简单!你不需要担忧设备适配的问题,它在任何情况下都能工作。
HEVC和VP9都是令人称赞的编解码器,但是它们也都有自身的缺点。先进的编解码器需要更多的处理资源及能量来解码,比如,你使用你的三星S6手机播放一个HEVC视频,手机会比播放H.264视频的时候更烫。但是,虽然现一代的高级编解码器仍然在进行着抢占市场的斗争,下一代编解码器已经处于全力研发中的状态了。那么这些未来的编解码器会承诺带来什么功能呢?我们又能期待它们什么时候到来呢?
视频编解码器的未来
如果我们找到一个有预言能力的水晶球的话,看一看视频编码的未来是什么样子的,我们会看到这些:
# VP10,作为开源编解码器VP9的继承人,承诺将VP9的文件大小缩小一半
# Mozilla和Xiph研发的Dalaa开源编解码器
# Cisco开发的Thor开源编解码器
# AV1 亚马逊,Cisco,Google,Intel,Microsoft,Mozilla和Netflix组成一个开源媒体联盟,共同开发一个免费的编解码器,叫做AV1
# NETVC,一个IETF用来研发下一代免费编解码器的标准化项目
看起来每个人都不喜欢HEVC那种高昂的使用费用,大家都认为互联网是更应该成为一个开源,免费的平台。我个人已经等不及想要看到MPEG成员发现他们的现金流断掉的那一天了,然后我们终于有一个可以在所有设备,所有播放器上免费使用的超级编解码器了。
在上文所写的清单中,NETVC是我们认为最容易成为新的行业标准的,因为它是由IETF所承担研发。NETVC很有可能会超过清单里其他的编解码器成为表现最好的那一个开源标准。所以我们期待的下一代编解码器到来的时间是什么呢?
根据NETVC网页上的信息,他们在2017年5月向IESG提交了储存格式和编解码器的说明,所以下一代编解码器已经来了!如果有什么计划和测试的话,应该会在今年12月之前完成。但是话说回来,我对在2018年以前就在Adobe Premiere的输出窗口中使用下一代编解码器并不抱太大期望。而在这之前,VP9是我们所能采用的最强大的武器。