5.3.2. 如果有Xing头,则是VBR,解析XING头,计算播放时间

如果对应XING头的位置有对应的” Xing”字符,那就说明是Xing头。

那么就可以解析Xing头,找到对应的我们所需要的一些值,尤其是总的帧数。

然后用之前介绍的公式 4.2 “VBR MP3总的时长(VBR Duration)”去计算VBR的播放时间。

其中:

  1. 总的帧数(Number of Frames):

    可以通过解析XING头,找出里面总帧数(Frames),这个字段,一般都是存在的。

  2. 帧的采样个数(Samples Per Frame):

    根据前面解析MPEG,找到MPEG的版本,基于属于哪个Layer,然后根据表 3.4 “MPEG帧的采样数索引表(单位:个/帧)”查得每帧的采样个数,得到每一帧有多少个采样。

    而对于MP3(MPEG-1,Layer III)此处肯定是对应的1152

  3. 采样率(Sampling Rate):

    根据前面解析MPEG,找到2比特大小的采样率索引 ,然后根据表 3.3 “MPEG帧的采样率索引表(单位:Hz)”找到对应的采样率。

此处,也就是找到我们前面所说的,总的帧数,加上另外两个参数:帧的采样数和帧的采样率(都是通过解析第一帧的帧头,即可算出对应的值),然后我们就可以算出VBR的MP3文件的总的播放时间长度了。