原文地址如下: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,这意味着硬件成本要增加
什么是CBR,VBV和CPB
最新推荐文章于 2024-05-21 20:42:14 发布