转自: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. x264学习----x264.h结构体

    x264.h结构体学习,还在持续更新中 /****************************************************************************** ...

  2. 流媒体-H264协议-编码-x264学习-主要结构体(二)

    流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一) 流媒体-H264协议-编码-x264学习-主要结构体(二) 流媒体-H264协议-编码-x264学习-主要函数(三) 流 ...

  3. ffmpeg设置h264编码IDR间隔

    在ffmpeg中,编码h264时,想强制刷出一个I帧,比较容易,但是想强制刷出IDR帧,却没有明确的说明. 而在x264的头文件中,可以看到一个参数说明: int i_keyint_max; /* F ...

  4. ffmpeg 设定码率

    主思路 H.264 的建议码率设定方案是 crf ,如果需要比较高的画质,可以设为10左右,如果要要兼顾画质和文件大小,可以设为17左右,默认是23. 详情 ffmpeg支持多种方法设定码率,-gp ...

  5. x264_param_t 详解

    x264的x264_param_t结构 typedef struct x264_param_t {/* CPU flags */unsigned int cpu;/* 并行线程的数量,即同时被编码的图 ...

  6. C++-FFmpeg-(5)-2-h264-概念与名词:宏块-I-P-B帧;参数设置:ABR、CQP、CBR、CRF;码流:SPS-PPS

    1.h264预测流程   1.1宏块的划分   1.2帧内预测-帧间预测   1.3DCT离散余弦变换   1.4量化 2.参数设置   2.1Ultrafast最快和zerolatency   2. ...

  7. [BTS2004]一步一步学习BizTalk2004 CBR(content-based routing)

    CBR ( content-based routing ) CBR 可以实现将指定的消息内容进行路由处理 在这个例子中,可以实现将传入的消息,对指定的内容进行筛选,把满足条件的消息传输到指定的路径下 ...

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

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

  9. 视频编码中的RC(rate control)是什么?码率控制 CBR (Constant Bit Rate)、VBR (Variable Bit Rate)

    再看RXW源码的时候在视频编码结构体里有一个RC结构体,RC(rate control)到底是啥? 码率控制技术 RC (Rate Control) 是实际视频编码器中一个非常重要的技术模块. 根据实 ...

  10. 音视频中的CBR,VBR,ABR

    视频码率CBR和VBR   固定码率(CBR)与可变码率(VBR) 一般在我们输出视频文件的时候都会碰到一个选择即CBR与VBR,CBR的英文全称是Constant Bit Rate翻译过来是固定码率 ...

最新文章

  1. Day 02 你最爱的交通方式
  2. ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
  3. ios添加全局悬浮按钮_iOS开发悬浮按钮
  4. java args_Java命令行界面(第2部分):args4j
  5. nslookup 包含在那个包中_nslookup命令详解
  6. 安装mysql5.7.24rpm_centos7安装mysql-5.7.24(rpm安装)
  7. 阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis
  8. C# 通过接口IEnumerator让自己编写的对象/类,实现foreach遍历方法
  9. MATLAB2016添加工具箱toolbox方法,有截图
  10. java 改像素不改尺寸_如何不改变分辨率的情况下缩小尺寸PNG图片
  11. mysql yacc 解析_yacc介绍
  12. **冠图DWG图纸加密个人版**
  13. Phase2 Day20 事务 索引
  14. 综合布线系统计算机网络,综合布线 计算机网络系统
  15. java获取CPU温度centos,用软件lm_sensors监测Linux系统和CPU温度
  16. hihocoder #1828 : Saving Tang Monk II(BFS)
  17. win10 网络发现 打开保存后,自动关闭
  18. Java进阶(一) Java高效读取大文件,占内存少
  19. 近端梯度法(proximal gradient)
  20. Git Gitosis

热门文章

  1. app推送怎么实现更好的效果?
  2. mysql 免安装 密码_mysql免安装版配置与修改密码
  3. SpringMVC框架中@Controller类的方法的返回值的详细介绍
  4. OC5128欧创芯原装芯片,开关降压型恒流驱动芯片
  5. “Improving Adversarial Robustness Requires Revisiting Misclassified Examples“ 论文笔记
  6. win10怎么更改照片分辨率和大小?图片dpi修改方法
  7. android视图动画(ViewAnimation动画)
  8. 虚拟机文件上传至dsm服务器,群晖还可以这样玩!VMM虚拟机无损尝鲜DSM7.0
  9. 推荐一款待办事项和日程管理的微信小程序——腾讯待办
  10. CMake中链接库的顺序问题