0%

视频码率控制

视频编码过程中,量化(有损压缩)决定了视频的码率,视频码率又一定程度决定了视频的质量。

量化值QP越大则量化的粒度越高,压缩比越大,码率越小,视频质量越低,呈现的画面马赛克较大、模糊不细腻。反之亦然。

选择一个适合场景的视频码控方案很重要,调整视频输出码率就是在视频编码速度、网络带宽以及视频质量之间做平衡。总体来说,选择视频码率控制方案,可通过一下因素权衡得出:

  • 画质,视觉质量稳定性。如清晰度、流畅度、细节等,这与人眼的视觉原理有关,选择人眼主动质量感受最高的模型。
  • 输出码率。要考虑网络带宽因素。
  • 视频文件大小。利于传输、存储,还要看系统的空间大小。
  • 编码速度。不同的码控模型影响了编码速度。

码控因素

GOP长度

Maximun B-frame,最大B帧数量

Reference frame,设定一个P帧所能参考的帧数量,会影响播放相容性。

QP,Constant Quantizer,恒定量化值:控制图像画质,数值越低画质越高。

码控模型

码率控制实际上是一种编码的优化算法,它用于实现对视频流码流大小的控制。目的在于同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然。

CQP

固定QP。最简单的码控方式,每帧图像都按照一个特定的QP来编码,每帧编码后的数据量有多大仍是未知的,既不是码率优先模型,也不是质量优先模型。

特点

  • 瞬时码率会随场景复杂度波动。
  • 编码速度快,调控最简单。
  • x264和x265中支持CQP模式,libvpx不支持。
    • H.264中QP范围是[0, 51]。QP值越大表示越大的量化步长,编码视频的质量越低。QP为0表示进行无损编码。

适用场景

一般不建议使用这种方式,因为这没有考虑编码内容的复杂性,用相同的压缩比处理每一帧。出来的视频质量和码率都不固定。适合于非常简单的运动量很小的画面,因为一遇到复杂场景,其码率波动就非常大。

CRF

Constant Rate Factor,恒定码率系数。把某一个“视觉质量”作为输出目标。通过降低那些耗费码率但是又单一用肉眼察觉的帧(高速运动或纹理丰富)的质量,提升那些静态帧码率来达到目的。

帧间QP变化,帧内宏块QP变化,输出码率未知,各帧输出的视觉质量基本恒定,相当于固定质量模式+限制码率峰值的方式。

特点

  • 与恒定QP类似,单追求主观感知的质量恒定,瞬时码率也会随场景复杂度波动,视频帧之间或者内部宏块之间的QP值都不一样。
  • 对于快速运动或细节丰富的场景会适当增大量化失真(因为人眼不敏感);反之对于静止或平坦区域则减少量化失真。
  • CRF是x264和x265的默认码率控制方式,也可用于libvpx。
    • RF值越大视频压缩比越高,但视频质量越低,各codec的CRF取值范围一般[0-51],但是一般默认值x264用23,x265默认为28。
    • 如果你不确定要使用什么RF,从默认值开始,并根据对输出的主观印象进行更改。如果质量没有足够好则较低的RF。如果文件太大了则选择更高的RF。更改±6会导致码率大小的一半/两倍左右的变化,±1会导致码率10%左右的变化。

适用场景

对视频质量又一定要求的场景。CRF值可以简单理解为对视频质量最期望的一个输出固定值,无论是在运动复杂场景还是在静止简单的场景下,都希望一个稳定的主观视频质量时,选择该模式。该模式时视频质量优先模型。视频质量可简单理解为视频清晰度、像素的细腻程度和视频的流畅度。

CBR

Constant Bit Rate,恒定码率。一定时间范围内码率基本保持恒定,属于码率优先模型。

特定

  • 码率稳定,但质量不稳定。带宽有效利用率不高,特别当该值设置不合理,在复杂运动场景下,画面会非常模糊,非常影响观看体验。
  • 输出视频码率稳定,便于计算视频体积大小。

适用场景

一般也不建议使用这种方式,因为这种模型不考虑视频内容的复杂性,吧所有视频帧都统一对待。但有些编码软件只支持固定质量或固定码率,有时不得不用。使用的时候,在允许的带宽范围内尽可能吧带宽设置大些,以防止复杂场景下视频质量的降低,如果设置不合理,在运动场景下就糊得看不成了。

VBR

Variable Bit Rate,可变码率。

简单场景分配较大QP,复杂场景分配较大QP,得到基本稳定的视频质量。确定时输出码率不可控。

有两种调控模式:

  • 质量优先模式:不考虑视频文件大小,完全按照视频内容复杂度来分配码率,这样视频的播放效果最佳。
  • 二次编码方式,2PASS:第一次编码检测视频内容简单和复杂的部分,同时确定简单和复杂的比例。第二遍编码让视频的平均码率不变,复杂的地方分配更多比特,简单地方分配更少比特。缺点时速度较慢。

特点

  • 码率不稳定,但质量稳定且非常高。
  • 编码速度较慢。点播、下载和存储系统优先使用,不适合低延迟直播系统。
  • 该模型完全不考虑输出视频带宽,为了质量,需要多少码率就占用多少,也不考虑编码速度。

适用场景

适用于那些对带宽和编码速度不太限制,但对视频质量很高要求的场景。特别是在运动复杂场景下也能保持较高的清晰度,且输出质量较稳定。适合延时不敏感的点播、录播或存储系统。

ABR

Average Bit Rate,恒定平均目标码率。

简单场景分配较低码率,复杂场景分配足够码率,使得有限的码率在不同场景下都能合理分配,类似于VBR。同意时间内,平均码率又接近设置的目标码率,这样可以控制输出文件的大小,这又类似于CBR。可以认为是CBR和VBR的折中方案,也是大多人的选择。特别是在对质量和视频带宽都有要求的情况下,可以优先选择该模式。一般速度是VBR的2~3倍,相同体积的视频文件质量却比CBR好得多。

特点

  • 视频质量整体可控,同时兼顾率视频码率和编码速度。
  • 使用过程中一般要设置最低码率、最高码率和平均码率,这些值的设置尽可能合理。

适用场景

ABR在直播和低延时系统使用较多,因为只编码了一次,所以速度快。同时兼顾了视频质量和带宽,对于转码速度有要求的情况下也可能选择该模式。B站大部分视频选择了该模式。

欢迎关注我的其它发布渠道