每次在使用H.264、HEVC、VP9或者AV1等面向分发的编解码器对视频文件进行编码时,你都要选择一种码率控制机制来控制码率、整体质量、瞬态质量和编码成本。常见的码率控制模式包括CBR、VBR、CRF和Capped-CRF。本篇文章将向大家介绍这些模式的工作原理,它们各自的优点和缺点,如何以及何时实现它们。
我们要讨论的前两个模式,CBR(恒定码率编码)和VBR(可变码率编码)几乎可用于每一个分发出来的编码器。后两个模式CRF(恒定码率系数)和Capped CRF(上限恒定码率系数)可用于FFmpeg中的x264、x265、libvpx-VP9和libaom-AV1,但本文中只讨论x264。
在本文的讨论中,我将用到三个文件:
测试文件(Test):这个两分钟的短片包括30秒的人物对着镜头讲话的视频和30秒的芭蕾舞视频,分别重复两次。
足球视频:这是一个两分钟的含有大量动作(高帧率)的足球测试视频,其中既有高帧率的区域,又有低帧率的区域。
人物近距离讲话视频:这是一个两分钟的慢动作(低帧率)人物近距离讲话视频。
每当你为了分发视频(而非为了存档或者转码上传文件)而编码视频文件时,你都应该考虑到五个因素:兼容性、整体质量、瞬态质量、可传输性和编码成本。下面是对这五个因素的简单描述:
兼容性:当把视频传输给播放器,它能解码和播放文件吗?这里我们讨论的是H.264,它几乎可以和任何播放器兼容。而HEVC、 VP9和AV1都可能存在兼容问题。
整体质量:是指视频文件的整体质量,在本文中,使用计算调和平均数的VMAF测量。
瞬态质量:是指视频文件显示时所可能出现的瞬间质量问题。在本文中,由低帧VMAF或者文件中任意帧的最低VMAF分值测量。
可传输性:向远在天边的观众传输无中断的视频是你应具备的能力。通常情况下,拥有高带宽连接的观众无需担心,但使用3G或类似网络连接传输视频肯定会出现问题
编码成本:涉及多次编码的技术明显增加编码时间,如果你需要为编码farm付费或者使用了很多云厂商的编码基础设施(如AWS Elemental Media Convert),那么两次编码将显著提高成本。
最后,在FFmpeg中,大多数编码工具都部署了x264和x265编解码器,其中有三个开关控制码率,它们分别是:
b:v :设置整体码率
maxrate:设置最大码率
bufsize :设置VBV(Video Buffer Verifier,视频缓存检验器)大小。
让我们先从CBR开始。
CBR:恒定码率编码
顾名思义,当你使用CBR(Constant Bitrate Encoding)编码时,意味着你对全部文件都使用了恒定的码率(无论视频文件中场景的复杂度如何)。当使用FFmpeg编码时,你可以通过对b:v、maxrate和bufsize使用相同的数据率实现CBR,如下所示:
-b:v 5000k -maxrate 5000k -bufsize 5000k
在测试文件中,交替播放30秒人物近距离讲话和30秒芭蕾舞的视频内容,CBR编码文件如图1(在Bitrate Viewer中)。如果你仔细观察,你会看到跟踪平均码率的蓝色波浪线在码率5000kbps左右徘徊。
在右侧,你可以看到平均码率为4938kbps,峰值码率为6013kbps,高出平均码率约20%。大多数编码器软件中,CBR的显示都不是一条直线,但相比于下文的其他控制技术,它的可变性明显更小。
图1 使用CBR编码的测试文件
我们稍后将回顾CBR的质量影响。
从可传输性的角度来说,CBR的优势非常明显。
如果你将直播视频通过固定码率连接上传到云,或者通过受限连接将视频发送给遥远的观看者,那么视频流缺乏可变性将确保其不会中断。CBR也是单Pass(Single-Pass)技术,这意味着它的成本要比接下来讨论的VBR低。
VBR:可变码率编码
VBR(Variable Bitrate Encoding)编码的目的是达到码率目标,但是在播放期间能够根据视频内容的复杂度来调整码率。VBR通常要求2 pass:第一遍扫描视频,识别不同区域的复杂度;第二遍进行实际的编码。
VBR通常通过描述最大码率在目标码率上的变化来进一步明确。你可以称下文中第一个示例为200%受限VBR,因为最大码率为目标码率的两倍;第二个示例为150%受限VBR,因为最大码率为目标码率的150%;第三个示例为110%受限VBR。
-b:v 5000k -maxrate 10000k -bufsize 10000k-b:v 5000k -maxrate 7500k -bufsize 7500k-b:v 5000k -maxrate 5500k -bufsize 5500k
图2 使用200%受限VBR编码的测试文件
图2显示了使用200%受限VBR编码的测试文件的码率配置。在交替的慢动作近距离讲话视频与高速动作的芭蕾舞之间,数据波动明显。即使平均码率与CBR相似(分别为5041kbps和4938kbps),但最大码率显著提高(分别为11137kbps和6013kbps)。150%受限VBR视频拥有相似的平均码率(5036kbps)和降低了20%的峰值码率(9090kbps)。
从可传输性角度来说,VBR明显更具挑战,但这只有在受限连接与视频流码率接近时才会出现。如果你正在向美国、欧洲、斯堪的纳维亚地区的观众通过50 mbps或者更高的网速传输5000kbps、1080p的视频,你很可能不会出现任何传输问题。但是如果是向相同地区的观众以40mbps网速传输8K视频,那么使用200%受限VBR就有点吓人了。当然,如果是3G连接上的500kbps 200%受限VBR,那么使用CBR(或110%受限VBR)听起来就好多了。
这一切所带来的质量影响都有哪些?
表1显示了真实世界中足球视频片段所使用的四种模式的得分。平均码率非常相似,峰值码率差异明显。整体VMAF得分非常接近。CBR与最高VBR值之间的分值差小于0.7。
编码模式 | 平均码率 | 峰值码率 | VMAF | 低帧VMAF |
CBR | 4938 | 6013 | 95.17 | 79.76 |
200% CVBR | 5041 | 11137 | 95.69 | 85.39 |
150% CVBR | 5036 | 9090 | 95.80 | 84.47 |
110% CVBR | 4944 | 6662 | 95.57 | 82.59 |
表1 码率控制技术的质量影响
最大的不同在低帧分值(审校者注:指以帧的粒度看VMAF分数,其最低单帧VMAF分),即瞬态质量问题的指标,其中CBR比200%受限VBR低了约5.5分。这表示一些观众有可能注意到瞬间出现的问题。有趣的是,在200%受限VBR和150%受限VBR的低帧VMAF之间只有1分之差,150%受限VBR和110%受限VBR之间有两分之差。
为了进一步探索,我对比了莫斯科国立大学视频质量衡量工具中的CBR和200%受限VBR文件(图3)。
上图是整个视频文件播放期间,CBR和200%受限VBR文件的VMAF分值,其中CBR为红色,200%受限VBR为绿色。
下图是上图中突出显示区域的放大图(大致为2100帧到3400帧),红色钟乳石状所表示的帧中的CBR质量明显低于VBR。
图3 使用200%受限VBR编码的测试文件
在图中,你可以在右下角看到Show frame按钮。在这段视频中,使用了相当保守的编码参数,CBR帧和VBR帧之间的区别几乎忽略不计,因为其中最明显的差异只有1~2帧。
其他视频片段中,如果使用较低的码率编码,那么瞬态问题就会更加明显。所以大部分VOD生产商为了避免这些问题选择使用VBR(而非CBR),尤其是在向高带宽观众分发1080p视频时。
有趣的是,Apple在HLS Authoring Specifications中支持了200%受限VBR,其说明如下:“1.30. 对于VOD内容来说,峰值码率不应该超过平均码率的200%。”但是200%受限VBR是否适用于高帧率8K内容(可能需要40mbps才能达到可接受的质量)还有待观察。
现在让我们来总结一下,CBR在成本和可传输性上胜出一筹,而VBR在整体质量上扳回一局。然而,CBR所带来的瞬态质量问题风险却是实实在在的。
CRF:恒定码率系数
使用CBR和VBR时,你需要选择一个目标码率,编码器会调整视频质量以达到该目标。这种方法的问题是,如果你对所有视频片段使用了相同的码率阶梯,那么就会在容易编码的视频(如近距离讲话视频)上浪费很多不必要的带宽。
图4显示了使用200%受限VBR编码、目标码率为5mbps(与足球视频相同)的近距离人物讲话视频。平均码率和峰值码率与上面的足球视频一致,但是VMAF分值为97.61。
研究显示,VMAF值一旦超过93分,观众便无法感知。这也是我推荐生产商把VMAF目标值设置为95作为上限的原因。如下图所示,使用该视频,你可以减少至少60%的码率,但仍然能够达到VMAF 95的目标。
图4 VBR编码的问题在于,即使对于该视频来说数据率和质量水平过高,它也会达到目标码率
所以,当使用CBR和VBR编码时,编码器会调整所需的视频质量进而达到目标码率。相比之下,使用CRF编码(Constant Rate Factor Encoding,一种单pass编码模式),你选择一种目标质量,编码器会通过调整码率达到该质量水平。CRF值分布为从0到51,数值越低,质量越高。使用CRF和FFmpeg编码如下所示:
ffmpeg -i input_file -crf 23 output_file
CRF适用于存档或者生成需上传和转码的mezzanine文件。然而,从可传输性的角度来说,它并不是最理想的方法:因为你并不知道将产生的数据率,直到你编码了文件。
在人物近距离讲话视频中,CRF值22生成了平均码率为1878kbps和VMAF分值为96.29的文件,比VBR编码的码率降低了60%以上,且质量没有明显影响。
然而,在足球视频中,CRF值22产生了10650的平均码率,这对于1080p编码阶梯来说太高了。
如何才能在确保合理码率限制的同时节省可用带宽?将CRF和码率上限组合使用就可以,也就是Capped CRF。
Capped CRF :上限恒定码率系数
顾名思义,Capped CRF就是将CRF值与码率上限组合使用。相关的命令如下所示:
-crf 22 -maxrate 5000k -bufsize 10000k
图5显示了在人物近距离讲话和芭蕾舞交替出现的视频中,该命令所生成的结果。同样,虽然最大码率不是一条水平直线,但芭蕾舞GOP与5000kbps线非常接近,码率峰值为6302kbps。在操作中,编码器使用CRF值对人物近距离讲话区域进行编码,并在芭蕾舞区域应用Capped CRF。
这与200%受限VBR相比效果如何?
200%受限VBR编码产生了一个平均的VMAF分值:97.30(以及码率5041 kbps)。所以Capped CRF编码节省了约30%带宽,并产生一个96.55的平均VMAF值,与200%受限VBR编码相比,它们之间的差异肉眼无法察觉。然而,如你所见,码率变化显著,所以在使用受限网络连接时,很可能会影响传输能力。
图5 Capped CRF与人物近距离讲话和芭蕾舞交替出现的视频
在含有大量动作的视频中,如足球测试视频中,CRF值在视频中许多区域所产生的码率要高于上限。在这些区域,码率由上限控制,而非CRF值。这种情况下,Capped CRF不会节省太多带宽,因为编码器在不超过上限的情况下生成特定质量的视频区域很少。
表2显示了分别使用200%受限VBR编码和Capped CRF(CRF 22/5 上限)的足球视频的码率数据和VMAF分值。可以看到它们的平均码率相近,但使用了Capped CRF的视频的峰值码率却低很多。平均VMAF分值也非常相似。
表2 足球视频;200%受限VBR vs. Capped CRF
而使用CBR,最主要的差异就是瞬态质量问题的指标——低帧VMAF。图6显示了来自VQMT的对比结果。同样,我在观察主要的钟乳石状所代表的帧的位置时,没有发现明显的差异。
然而,其中CBR只是提高了可传输性,Capped CRF被应用于容易编码的文件中,可以提升可传输性且节省带宽。本质上,这使得Capped CRF成为一种Per-Title编码技术,你可以通过几乎所有基于FFmpeg的编码工具(直播和点播)来实现它。
图6 200%受限VBR与Capped CRF之间的对比
Capped CRF也不是银弹。你应该运行自己的测试文件,然后确定视频中的瞬态问题是否比我在足球视频中看到的更明显。如果瞬态问题很少,而你在考虑使用Capped CRF,这个时候你应该尝试不同的CRF级别(参见:
https://streaminglearningcenter.com/learning/choosing-the-optimal-crf-value-for-capped-crf-encoding.html)。
同样,并不是所有编码器和Codec都能够使用CRF和Capped CRF;如果你正在使用第三方的编码器(该编码器并不是基于FFmpeg,且没有使用x264、x265、libvpx-VP9或者libaom-AV1 Codec),那么CRF和Capped CRF就可能不可用。
表3总结了上文讨论的四种编码方法的优点和缺点。
表3 四种码率控制模式对比
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !