码率控制参数:
bitrate
默认:无
说明:三种可选的码率控制方法之二。设置x264使用固定目标比特率模式。固定目标比特率意味着最终文件的大小是可知的,但是目标的质量是不可知的。 x264会试图让最终文件的整体码率与给定的码率相等。参数的量纲为kilobits/sec(8bit = 1byte)。
通常这个选项和–pass选项配合进行2趟编码。
这个选项和 –qp和–crf是互斥的,三者只能选一个。
参见:–qp, –crf, –ratetol, –pass, –stats
-b bitrate 设置比特率,缺省200kb/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-bufsize
Depends on the profile level of the video being encoded. Set only if you're encoding for a hardware device.
ffmpeg -i input -c:v libx264 -crf 20 -maxrate 400k -bufsize 1835k
这将会有效的将crf值锁定在20,但是如果输出码率超过400kbps,在这种情况下编码器会将质量降低到低于crf 20。
x264的三种码率控制模式
三种模式为:需要注意的是crf模式无法预测最终文件体积。
在VBR和ABR情况下,可以设置vbv-maxrate和vbv-bufsize(很多情况下设置为vbv-maxrate = vbv-bufsize = bitrate,注意vbv-bufsize的量纲是不同,即最大缓存1s的数据)。
在RC_ABR码率控制方法下,如果vbv-maxrate == bitrate这时候其实进行的是CBR码率控制方法,encoder力争控制每一帧输出都稳定在bitrate上。
如果设置vbv-maxrate则vbv-bufsize必须设置,否则会提示"VBV maxrate specified, but no bufsize, ignored", vbv-maxrate会被改回为0。
如果设置vbv-bufsize而vbv-maxrate没有设置,则会提示"VBV maxrate unspecified, assuming CBR",vbv-maxrate会被设为bitrate,此时进行CBR编码。
一般设置为 vbv-maxrate = vbv-bufsize = a*bitrate。
a=0,不启用VBV机制,编码性能最好,适用于硬盘文件编码;但它输出的码率波动性大,有可能某些帧的比特数过高,不适用于有实际带宽限制的流媒体传输。
0
a=1,等于CBR,CBR是一种复杂和平滑场景都不大讨好的码率控制方法,一般不采用这一方法。
a>1,对每帧数据有限制,但又可以暂时超过平均码率,适用于流媒体传输。
对于某些特殊场景编码,例如电脑屏幕编码,它的特点是I帧纹理细节丰富,编码数据极大,P帧变化很小或者根本没变化,p帧数据很小。
这种情况,如果不设置vbv参数(保持缺省值0),I帧数据压不下来,码流会周期性的高低变动;有可能造成网络拥塞,数据包丢失,解码端花屏。
如果设置a=1,I帧得到限制,可以压下来,但编码质量下降太多,主观质量差。
因此需要根据网络设置成a>1,使得I帧可以暂时有限度的大于平均码率,而P帧编码时候还能把平均码率降下来。
}
其他影响码率的参数
x264 |
|
ffmpeg |
|
说明 |
命令行 |
字段 |
命令行 |
字段 |
|
qmax |
i_qp_max |
|
qmax |
mb_qmax的替代,最大的量化因子。取值范围1-51。建议在10-30之间。 |
qpstep qp-step |
i_qp_step |
|
max_qdiff |
最大的在帧与帧之间进行切变的量化因子的变化量。 |
qcomp |
f_qcompress |
|
qcompress |
量化器压缩比率0-1.越小则比特率越趋于固定,但是越高量化器参数越固定。 |
min |
i_qp_min |
|
qmin |
mb_qmin的替代,最小的量化因子。取值范围1-51。建议在10-30之间。 |
-qscale q 使用固定的视频量化标度(VBR)
-qdiff q 量化标度间最大偏差 (VBR)
-qblur blur 视频量化标度柔化(VBR)
-qcomp compression 视频量化标度压缩(VBR)
-rc_init_cplx complexity 一遍编码的初始复杂度
-b_qfactor factor 在p和b帧间的qp因子
-i_qfactor factor 在p和i帧间的qp因子
-b_qoffset offset 在p和b帧间的qp偏差
-i_qoffset offset 在p和i帧间的qp偏差