X264码率控制模式分为:CQP模式,ABR模式,VBR模式,CBR模式,CRF模式,lossless模式。
CQR模式:
----对I P B帧使用恒定的QP;
----使用qp确定P帧的QP,ipratio确定I帧的QP,pbratio确定B帧的QP;
----只是用1 pass编码,二次编码没用
----支持CRF模式的老式的码率控制模式已经过时了
----产生1 PASS编码的log文件没啥好处
x264 --qp 23 --ipratio 1.4 --pbratio 1.3 -o<output> <input>
ABR模式:
----尽量保证编码的视频码率控制在目标码率上下,但是无法保证一定会
----设置码率控制参数
----qpmin,qpmax,qp_step被用来保证ABR模式的质量
----qp,ipratio,pbratio在ABR中不起作用
----用于产生1 pass的logfile会对VBR或者CBR的2 pass会有好处
VBR模式
----执行ABR模式2 pass或者更多的pass,自动就得到VBR模式了
----相比ABR能够使编码的码流的码率更接近目标码率,但是花费的时间要长一些
----可以执行若干PASS的编码并写出log文件,但是三次编码之后,质量的提示就很小了,可以忽略不计
x264 --pass 1 --bitrate 1500 -o <output><input> # ABR Mode
x264 --pass 2--bitrate 1500 -o <output> <input> # VBR Mode
CBR模式
----在执行ABR模式的同时设置vbv_maxrate=目标码率的时候,就是CBR模式了
----由于严格地控制码率,可能会导致视频质量的严重下降;在确实需要将比特率限制在某一特定值以下的时候,才会采用这种模式
----1 pass 编码产生的logfile没啥作用,也就是说对指导2pass编码没啥卵用
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output><input>
CRF模式:
----在控制视频中所有帧的质量上有很好的效果
----无法有效地控制码率。可以通过不断地调整CRF值来获得所需要的码率,但是该方法不如直接采用ABR或者CBR来得实在
----CRF值建议设置为18,超过23会导致质量明显下降。(CRF取值越大,视频质量越不好)
----1 pass可以取得很好的效果,同时产生的logfile对2pass仍有很好的作用
x264 --crf 24 -o <output> <input>
Lossless模式:
----设置CRF=0或者QP=0,便是lossless模式
x264 --crf 0 -o <output> <input>
或者
x264 --qp 0 -o <output> <input>
对于一次编码,可以使用的模式是CQP,ABR,CBR,CRF或者lossless
-在需要保证视频的质量接近原始视频的时候,可以使用lossless模式
-如果比较注重码率,可以使用ABR模式
-如果比较注重视频的质量同时不在乎比特率,可以采用CBR
-CRF和CBR是互斥的,不可以同时使用
对于2趟或者更多趟编码,可以在第一次编码的时候采用ABR或者CRF模式,随后做VBR或者CRF模式,最后一趟做VBR或者CBR模式。
希望与大家共同进步!如有翻译不对的地方,还请批评指正!么么啾~~~
原文地址:https://mailman.videolan.org/pipermail/x264-devel/2010-February/006933.html