理解X264的码率控制模式

X264码率控制模式分为:CQP模式,ABR模式,VBR模式,CBR模式,CRF模式,lossless模式。

CQR模式:

----I P B帧使用恒定的QP;

----使用qp确定P帧的QPipratio确定I帧的QPpbratio确定B帧的QP;

----只是用1 pass编码,二次编码没用

----支持CRF模式的老式的码率控制模式已经过时了

----产生1 PASS编码的log文件没啥好处

x264 --qp 23 --ipratio 1.4 --pbratio 1.3 -o

 

 

ABR模式:

----尽量保证编码的视频码率控制在目标码率上下,但是无法保证一定会

----设置码率控制参数

----qpminqpmaxqp_step被用来保证ABR模式的质量

----qp,ipratio,pbratioABR中不起作用

----用于产生1 passlogfile会对VBR或者CBR2 pass会有好处

 

VBR模式

----执行ABR模式2 pass或者更多的pass,自动就得到VBR模式了

----相比ABR能够使编码的码流的码率更接近目标码率,但是花费的时间要长一些

----可以执行若干PASS的编码并写出log文件,但是三次编码之后,质量的提示就很小了,可以忽略不计

 

x264 --pass 1 --bitrate 1500 -o   # ABR Mode

    x264 --pass 2--bitrate 1500 -o  # VBR Mode

 

CBR模式

----在执行ABR模式的同时设置vbv_maxrate=目标码率的时候,就是CBR模式了

----由于严格地控制码率,可能会导致视频质量的严重下降;在确实需要将比特率限制在某一特定值以下的时候,才会采用这种模式

----1 pass 编码产生的logfile没啥作用,也就是说对指导2pass编码没啥卵用

 

x264 --vbv-bufsize 2000 --bitrate 1000 -o

 

 

 

CRF模式:

----在控制视频中所有帧的质量上有很好的效果

----无法有效地控制码率。可以通过不断地调整CRF值来获得所需要的码率,但是该方法不如直接采用ABR或者CBR来得实在

----CRF值建议设置为18,超过23会导致质量明显下降。(CRF取值越大,视频质量越不好)

----1 pass可以取得很好的效果,同时产生的logfile2pass仍有很好的作用

 

x264 --crf 24 -o

 

 

Lossless模式:

----设置CRF=0或者QP=0,便是lossless模式

 

x264 --crf 0 -o

或者

x264 --qp 0 -o

 

对于一次编码,可以使用的模式是CQP,ABR,CBR,CRF或者lossless

-在需要保证视频的质量接近原始视频的时候,可以使用lossless模式

-如果比较注重码率,可以使用ABR模式

-如果比较注重视频的质量同时不在乎比特率,可以采用CBR

-CRFCBR是互斥的,不可以同时使用

 

对于2趟或者更多趟编码,可以在第一次编码的时候采用ABR或者CRF模式,随后做VBR或者CRF模式,最后一趟做VBR或者CBR模式。



希望与大家共同进步!如有翻译不对的地方,还请批评指正!么么啾~~~


原文地址:https://mailman.videolan.org/pipermail/x264-devel/2010-February/006933.html

你可能感兴趣的:(X264)