x264码率控制
问题:在做视频编码时,当我们给定编码器一个目标码率的时候,编码器内部是怎么达到码率要求的那?
概况:关于码率控制有两个目的,第一:兼容传输,播放条件。第二:获取更高的视频质量。
码率控制分为两类:CBR:constantbitrate,固定码率。VBR:variablebitrate可变码率。
VBR:可变码率是一类码率控制算法的统称,他们的特点是局部的码率可变的,常用的可变码率子类包括如下:
1:abr:averagebitrate,控制整个文件的平均码率。
2:crf:constantrefactor,恒定质量。总码率不可控
3:cqp:constatntqp,恒定量化参数。关闭一切码率控制算法,与crf的区别在于,crf允许x264对每一帧,每一个宏块进行选取qp,从而产生一个恒定的质量。
对应的x264参数如下:defineX264RCCQP0defineX264RCCRF1defineX264RCABR2恒定QPintiqpconstant;0to(516(x264bitdepth8))。0losslessintiqpmin;minallowedQPvalueintiqpmax;maxallowedQPvalueintiqpstep;maxQPstepbetweenframes恒定质量floatfrfconstant;1passVBR,nominalQPfloatfrfconstantmax;InCRFmode,maximumCRFascausedbyVBV平均码率intibitrate;
恒定码率CBR:
并不是每个瞬间码率都相同,也不是每一秒码率相同。固定码率指的是固定信道容量。此时就涉及到了VBV(videobufferverifier)视频缓冲区校验器。vbv模型:编码码率通过一个容量受限的信道传输到解码设备,解码设备在解码前有一个缓存,解码器实时从缓存区读取数据解码,保证即不上溢也不下溢(即拿取速度过快或过慢)。
对应参数如下:最终生成的mp4文件可以看出码率为147kbps。,buffersize的带下取决于容忍的延迟以及播放器的硬件内存限制。intivbvmaxbitrate;缓冲区最大填充速度intivbvbuffersize;缓冲区大小。FFmpeg。exeiq。mp4crf21maxrate150kbufsize450kcodec:v:0libx264s320x240r15out。mp4