x264码率控制总结3——码率控制参数详解

x264码率控制参数详解

  -q, --qp <integer>          Force constant QP (0-51, 0=lossless)
默认:无
说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一。设置x264使用固定QP模式。设定的QP将被作为P帧的量化参数,I帧和B帧的量化参数由–ipratio and –pbratio参数进一步算出。CQP模式使用固定的QP,这意味着最终的文件大小是不可知的。设置为0将产出无损输出。相同视觉质量时,CQP模式编码输出的文件比CRF模式大。CQP模式将关闭自适应量化器,因为它是固定QP的。
这个选项和 –bitrate和–crf是互斥的,三者只能选一个,选择的顺序是 bitrate > QP > CRF。一般而言crf都能代替QP模式,不过QP因为完全不需要预测所以它会运行地更快些。
参见:–bitrate, –crf, –ipratio, –pbratio                      


  -B, --bitrate <integer>     Set bitrate (kbit/s)
默认:无
说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一。设置x264使用固定目标比特率模式。固定目标比特率意味着最终文件的大小是可知的,但是目标的质量是不可知的。x264会试图让最终文件的整体码率与给定的码率相等。参数的量纲为Kbits/sec,x264程序里面1K是1000,而不是1024。
通常这个选项和–pass选项配合进行2趟编码。在网络流媒体应用中选择这个方法。
这个选项和 –qp和–crf是互斥的,三者只能选一个,选择的顺序是 bitrate > QP > CRF。
参见:–qp, –crf, –ratetol, –pass, –stats


      --crf <float>           Quality-based VBR (0-51) [23.0]
默认:23.0
说明:三种可选的码率控制方法(bitrate, CQP,CRF)之一。固定ratefactor。QP是固定量化参数,bitrate是固定文件大小,crf则是固定“质量”。CRF=n可以提供跟CQP=n一样的视觉的质量,但是文件更小。RF是Rate Factor。
crf是通过降低那些“不重要”帧的质量做到这一切的。“不重要”意思是过于耗费码率又难以用肉眼察觉的帧,比如纹理复杂或者高速运行的场景。省下来的码率会用在其它更有效的帧上面。可以把CRF看作是一个动态的CQP,它根据一定的准则分配不同的QP到每一帧上。
crf编码比2趟编码快,因为它相当于省略了第1趟编码。crf的最终码率也是不可预测的。一般压片字幕组都使用这种码率控制方式。
这个选项和 –qp和–crf是互斥的,三者只能选一个,选择的顺序是 bitrate > QP > CRF。
参见:–qp, –bitrate
一些关于crf的备忘:a.相对于bitrate方式,cpu占用与内存占用均会下降;b.锐化滤镜会让crf的码率上升;c.vbv对crf依然有效;d. crf18就接近无损,字幕组惯用20-22。
下面是对照表:
crf bitrate-min  bitrate-max
 20    420          1200
 21    370          1000
 22    330           850
 23    300           700
 24    250           600
 25    220           500
 26    200           432


      --rc-lookahead <integer> Number of frames for frametype lookahead [40]
默认:40
说明:为mb-tree码率控制机制(Macroblock Tree Ratecontrol)和vbv-lookahead设置可用的帧的数量。最大可设置为250。
对于mb-tree而言,调大这个值会得到更准确地结果,但也会更慢。mb-tree能使用的最大值是MIN(rc-lookahead, keyint)。
对于vbv-lookahead而言,调大这个值会得更稳定和精确的码率控制。vbv-lookahead能使用的最大值是如下公式算出来的:MIN(rc-lookahead, MAX(keyint, MAX(vbv-maxrate, bitrate) / vbv-bufsize * fps))
参见:–no-mbtree, –vbv-bufsize, –vbv-maxrate
rc-lookahead会增加编码启动群延时(编码器会储满rc-lookahead帧数据后,才开始第一帧编码),在实时视频通信系统中设置它为0。


      --vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0]
默认:0
说明:设置VBV可用的最大缓冲区,单位是kbits。VBV(Video Buffering Verifier,视频缓存检验器),它作用是处理各帧编码后大小不一和恒定输出码率的矛盾。可以将VBV想象成为一个水池,水池的入口连接着encoder的输出,出口为恒定码率的网络输出。为了使得输出恒定,encoder必须保证水池既不上溢也不下溢。下溢会导致无数据输出,上溢会导致数据丢失。所以encoder在编码一帧时会参考当前vbv的充盈情况,并由此计算出,当前帧应当编码出多少比特,从而保证既不上溢(增加QP)也不下溢
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值