转自:https://codesequoia.wordpress.com/2010/04/19/what-are-cbr-vbv-and-cpb/

It’s common mistake to to consider CBR (Constant Bit Rate) as “every frame is allocated the same number of bits”. If it were the case, then what would be the purpose of P or B frames? The whole purpose of P/B frame is to reduce the number of bits by referencing another frame. Of course, there are a lot of CBR streams with P or B frames. You can easily see every frame have very different number of bits even in a CBR stream.

So, what is CBR? In MPEG-2 and H.264, CBR means the number of bits fed to the decoder is constant over time. In other words, the data transfer rate to the decoder is constant. It’s nothing to do with the number of bits of individual frames.

Confused? How is it possible to allocate different number of bits to frames while keeping the incoming data rate constant?

Answer: you need a buffer. To understand the logic, consider a water outlet, a water tank, and a series of “picture decode guys” lined up in front of the tank.

The water (coded MPEG-2 or H.264 stream) is constantly flowing into the tank. The guys are lined up in front of the tank and remove the water for each frame to be decoded. The removal happens at the fixed time interval in most cases.

Even though Mr.I, P, and B are removing different amount of water (=each frame needs different number of bits), the water outlet speed is constant thanks to the tank (buffer).

In MPEG-2, the buffer is called VBV buffer (Video Buffer Verifier Buffer). In H.264, the buffer is called CPB (Coded Picture Buffer).

The water level of the tank at certain time instance is called buffer fullness and described in number of bits. The size of the tank is called VBV buffer size in MPEG-2 and CPB buffer size in H.264.

The coded stream must be constructed so that the tank (=buffer) never overflow or underflow. There are commercial/non-commercial software called “buffer verifier” to check the errors.

When the buffer size is set to large value (it’s an encoded stream parameter), the encoder can use large variance of bits for each frame which generally results in better video quality. However, the decoder needs to have the large buffer, which means more expensive hardware.

What are CBR, VBV and CPB?的更多相关文章

  1. VBV Rate Control

    Part 1 <06/05/07 12:08pm> Manao | he is negating a float by printing it, adding a "-" ...

  2. MPEG简介 + 如何计算CBR 和VBR的MP3的播放时间

    1. 声明本文所写内容,多数整理自互联网,版权归原作者所有笔者知识有限,文中难免有误,欢迎批评指正,admin (at) crifan.com觉得此文对你有帮助,想要发邮件来感谢的,也欢迎哈,^_^欢 ...

  3. VBR与CBR的区别是什么?

    VBR是动态码率.CBR是静态码率. VBR(Variable Bitrate)动态比特率.也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方 ...

  4. 音频转化mp3 ,到底选vbr还是cbr

    毫无疑问,aac格式是最好的. 其次,应该是 vbr. 参考下面文章 http://tieba.baidu.com/p/1966991568 总结: 1.正版iTunes Plus 256K AAC格 ...

  5. H264三种码率控制方法(CBR, VBR, CVBR)

    CBR(Constant Bit Rate)是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳 ...

  6. 〖Android〗酷派手机固件.cpb文件的分解程序

    /* * ===================================================================================== * * Filen ...

  7. H.264的码率控制:CBR和VBR

    CBR: Constants Bits Rate, 静态比特率. 比特率在流的进行过程中基本保持恒定并且接近目标比特率,当对复杂内容编码时质量会下降. 在流式播放方案中使用CBR编码最为有效;优点是带 ...

  8. web flash推流h264视频取消cbr

    flash as3.0 推视频H264关于视频质量 初次设置代码如下: h264Setting.setProfileLevel(H264Profile.BASELINE, H264Level.LEVE ...

  9. HDU 5416 CBR and tree

    #include<bits/stdc++.h> using namespace std; #define for(i,a,b) for(int i=a;i<=b;++i) //T,N ...

随机推荐

  1. spring-boot记录sql探索

    目标记录每次请求内的http.es.mysql耗时,本篇讨论mysql部分 为什么说要探索,这不是很简单的事么?但是能满足以下几点么? 能记录limit等参数 能将参数和sql写一起,能直接使用 能记 ...

  2. P1089_津津的储蓄计划(JAVA语言)

    package 顺序与分支; /* * 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱, 津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄, ...

  3. DB性能瓶颈分析思路

    在性能分析过程中,经常遇到性能瓶颈出现在SQL的情况,此类问题通常可以分为两大类场景,一是SQL自身性能差导致的慢,如索引缺失.索引失效.统计信息不准确.SQL过于复杂等:二是由于外部原因等待导致的S ...

  4. (5)MySQL进阶篇SQL优化(优化数据库对象)

    1.概述 在数据库设计过程中,用户可能会经常遇到这种问题:是否应该把所有表都按照第三范式来设计?表里面的字段到底改设置为多大长度合适?这些问题虽然很小,但是如果设计不当则可能会给将来的应用带来很多的性 ...

  5. Spring (二)SpringIoC和DI注解开发

    1.Spring配置数据源 1.1 数据源(连接池)的作用 数据源(连接池)是提高程序性能出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 ...

  6. Apache HTTP Server与Tomcat整合学习记录

    Apache HTTP Server与Tomcat整合 个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4 前言 ​ 其实网上有很多教程,但问题是得每次 ...

  7. win10 添加全局快捷键

    前言 好久没写博客了,今天水一下 如何在win10 下添加一个全局唤醒的快捷键(打开截图软件) 步骤 win + Q 输入 管理工具 添加快捷方式 这里没有管理员权限,可以直接把创建好的 快捷方式 粘 ...

  8. Typora+PicGo配置图床神器(图片链接URL)

    目录 1.下载Typora 2.下载PicGo 3.Typora 配置 1.下载Typora 有能力科学的小伙伴,可以从官网下载,地址为Typora 向下滚动,点击Downloda后,选择自己的操作系 ...

  9. php正则表达式过滤空格 换行符 回车

    我整理了几个比较适合的实例了,对于它们我们是有很多站长都测试过并用过了,不过文章最后我的总结也是生重要的哦,至于原因我也说不上了,因为chr是ascii编码了所以有时浏览器会自动转成ascii,特别像 ...

  10. 技术面试问题汇总第002篇:猎豹移动反病毒工程师part2

    这次拿三个问题来讨论,是关于调试器的.因为对于反病毒工程师而言,类似于OllyDbg和IDA的使用方法是必须掌握的,但是在面试中又不太方便考察,所以只能对其快捷键或者调试器实现原理之类的问题进行提问. ...