--rc-lookahead 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 Set size of the VBV buffer (kbit) [0] 默认:0 说明:设置VBV可用的最大缓冲区,单位是kbits。VBV(Video Buffering Verifier,视频缓存检验器),它作用是处理各帧编码后大小不一和恒定输出码率的矛盾。可以将VBV想象成为一个水池,水池的入口连接着encoder的输出,出口为恒定码率的网络输出。为了使得输出恒定,encoder必须保证水池既不上溢也不下溢。下溢会导致无数据输出,上溢会导致数据丢失。所以encoder在编码一帧时会参考当前vbv的充盈情况,并由此计算出,当前帧应当编码出多少比特,从而保证既不上溢(增加QP)也不下溢(减少QP)。为了防止上溢,VBV会要求降低编码比特,encoder会采用更大一些的QP,这样必然降低了视频序列质量,因此只在真正需要的时候才设定它。一般在硬件解码端的时候,一定要做这个设置。例如蓝光定义最大的数据缓冲为30M比特,能够解码的最大视频码率为40Mbps。这是对硬件解码器资源选配的一个合理限制,否则解码器不知道预留多大的数据缓冲空间才是安全的。这类似264标准的level设定。 有三个例子是介绍vbv-bufsize和vbv-maxrate这两个参数的设定。