4.2.1. 平均比特率法

这个方法,就是和CBR同样的思路,对于VBR的MP3来说,假如也像CBR的MP3一样,也有个类似的每一帧都是固定的某个值的比特率,那么计算整个VBR的播放时间,也就可以用上面CBR一样的公式去计算了。

由此,就有了平均比特率的概念,即,将所有帧的比特率的值相加,得到一个总的比特率的值,然后除于总的帧数,就得到了一个平均比特率,这样,使得理论上,此VBR相当于一个比特率为该平均比特率的CBR了。

不过,可以看出,需要计算平均比特率之前,要先得到每一帧的比特率的值,以及总的帧的数目,然后才可以计算平均比特率的值。

而为了得到每一帧的比特率的值,就要将整个VBR MP3文件都遍历一遍,以此找到所有的帧,并解析每一个帧的帧头,得到比特率索引值,然后查表得到比特率的值。

如此做的话,效率显然很低。因为此处只是为了计算整个VBR MP3的播放时间,却要遍历整个文件,还要解析每一帧的帧头,显得很是得不偿失。

所以,就有了更好的,效率更高的,下面要介绍的另一种方法,来计算VBR MP3的播放时间。

另外,需要提醒的是,对于平均比特率来说,往往和第一帧的比特率相差很大。因为常见的MP3音乐的开头部分,即第一帧或者前几帧,多数是一些无声的数据,或者本身包含信息量很少,比特率很低的数据。因此,其意味着,如果解码器对于VBR文件,误解为CBR文件,按照CBR所有帧的比特率都相同的逻辑,去解析第一帧,得到一个比特率,然后用此比特率来计算整个文件的播放时间的话,那么往往计算出的播放时间和实际的相差很大。这也就是后面引用中一个帖子里面遇到的情况,即,Media Player Classic播放VBR的MP3时的时间问题。