什么是CBR,VBV和CPB

本文深入解析了CBR(恒定比特率)编码的概念,纠正了常见的误解,即CBR并非给每一帧分配相同比特数。文章解释了在MPEG-2和H.264中,CBR确保解码器接收的比特率恒定,而帧间比特数差异由VBVbuffer(VBV缓冲区)或CPB(编码图像缓冲区)调节。通过水龙头、水箱与排队的‘图片解码’人士的比喻,生动阐述了这一机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址如下:https://codesequoia.wordpress.com/2010/04/19/what-are-cbr-vbv-and-cpb/。
翻译:
有人认为CBR就是给每一帧分配一样大小的比特数,这其实是一个比较常见的误解。如果是这样,P帧和B帧存在的意义是什么呢?P帧/B帧存在的目的就是为了通过参考其它帧来降低码率。所以,在一个CBR码流中,有大量的B帧/P帧,并且你可以很明显的在CBR码流中看到每一帧都有不同的比特数。
那么,什么是CBR呢?在MPEG-2和H264中,CBR意味着推送到解码器上的比特率是固定的。换句话说,到解码器的数据传输速率是固定的。它和单个帧的比特数无关。
那它是如何做到保持比特率恒定的同时又给不同帧分配不同的比特数呢?
答案就是需要使用一个buffer。为了理解它,你需要想象一个水龙头,一个水箱和一系列的在水箱前排成一行的叫做“图片解码”的家伙。
在这里插入图片描述
水(MPEG-2或者264码流)在不断地流入水箱。这些家伙在水箱前排成一行,不停的移走水(把这些帧送去解码)。这些水在大多数情况下都是固定时间间隔被移走。
尽管I先生,P先生,B先生移走不同数量的水(每一帧需要不同的比特数)。但是因为有了水箱(buffer),水龙头的出水速度是固定的。
在MPEG-2中,这个buffer叫做VBV buffer。在H.264中,这个buffer叫做CPB(编码图像缓冲区)。
一定时间水箱的水位增长(用比特数表示)被叫做缓冲器填充度,在MPEG-2中,水箱的大小叫做VBV buffer大小,在H.264中,叫做CPB buffer大小。
编码的码流不能让这个buffer上溢或者下溢。所以需要buffer verifier的程序去检查这个错误。
当这个buffer大小被设置的太大时(这是一个编码参数),每一帧直接会有很大的差异,这通常会带来更好的视频质量。然而,解码器需要一个更大的buffer,这意味着硬件成本要增加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值