CBR与码率控制
CBR,Constant bitrate,字面意思就是恒定码率,CBR与VBR是对应的,VBR,Variable bitrate,也即可变码率。很多情况下需要采用CBR进行编码或者传输。比如数字电视传输信道通常是固定带宽的,因此要求数字电视内容的传输采用CBR。VCD也是CBR的,码率为1.15Mbps。
对于单个节目,采用CBR的好处在于:
- 省去了索引文件,避免了索引生成的过程。
- 可以实时生成快进快退流,避免了对于存储的浪费。
- 由于没有索引文件,所以更容易在内核中实现流的推送,提升了性能。
- 可以直接通过文件位置的seek实现时间上的seek。
- 使得把推流功能独立出来更容易,从而可以直接把推流功能做到kernel中,这样更有利于性能的提升。
CBR并非单纯指的编码的视频流是恒定码率的,从不同的层面看,有如下CBR:
- 视频编码层面的CBR。实现难度大,并非必须应用。
- 音视频复用成单节目流的CBR,此时视频本身可以是VBR的。自索引的TS流。
- 复用成多节目流的CBR,也就是统计复用,这时候每个节目流本身可以是VBR。数字电视传输。
视频编码层面的码率控制
由于画面复杂程度,场景切换,不同的帧编码类型不同等原因,每一帧编码后的大小都会不同。不采取任何码率控制的措施,编码出来的视频码流应该是VBR的。为了满足对于CBR的要求,需要对码率进行控制。
给出rc-buffer-size才能生成CBR,否则,总是生成的VBR。其实CBR是通过VBV来控制的。VBV就是Video buffering verifier。
采用x264编码的CBR需要继续研究。
复用成单节目TS流时的码率控制
参见我的博文:http://blog.sina.com.cn/s/blog_6a4c492f0100qy94.html
参考资料
- 关于ffmpeg中的VBR控制的讨论 http://www.chinavideo.org/archiver/?tid-256.html
- Mediaxyz访谈录:ffmpeg的码率控制
- H.263视频编码的码率控制算法及硬件实现 http://www.dzsc.com/data/html/2007-12-24/59765.html
- 有关面向H.26?码率控制的研究和设计
- FFMPEG设置 cbr讨论 http://blog.csdn.net/szu030606/archive/2010/10/12/5936386.aspx
- 码率控制CBR讨论 http://www.chinavideo.org/archiver/?tid-7377.html
- MPEG-2关键技术 http://lyj2682.spaces.live.com/blog/cns!177B1314D2038BE4!151.entry
- Real CBR x264 settings? http://forum.doom9.org/showthread.php?t=102893
- CBR讨论 http://hi.baidu.com/ilovejoy/blog/item/7be2cccb15433913be09e65f.html
(dqzhangp)