MP3文件如何计算总播放时间

来源:互联网 发布:海康威视网络监控 编辑:程序博客网 时间:2024/05/06 06:21

MP3文件中没有关于该文件总的播放时间这个变量,因此,要通过一定的计算方法来计算出一个MP3文件的总的播放时间。MP3文件根据比特率是否变化可以分为VBR和CBR的文件,因此,对于这两种文件,计算总播放时间的方法也是不一样的。

1、CBR的MP3文件的计算方法

CBR,故名思议,Constant Bitrate,文件的比特率是固定的,也就是说每个帧的比特率也是固定的。因此,可以通过下面的公式来计算总的播放时间:

总播放时间 = 文件大小 * 8 / 比特率

(1)文件大小:文件大小是以字节为单位。一个MP3文件包括两个部分,一部分是帧数据,还有一部分就是tag,因此,这里的文件大小是指MP3文件的总大小减去tag的大小,即:

文件大小 = 文件总大小 - tag大小

其实,tag所占用的空间与整个MP3文件相比,微乎其微,几乎可以忽略不计。

(2)这里的8是指一个字节包含的比特位数。

(3)比特率:要获得比特率,首先要对MP3文件的第一个帧的Header进行解析,获得比特率的索引值,然后,查比特率索引表,即可得到比特率。

2、VBR的MP3文件的计算方法

VBR,Variable Bitrate,即文件的比特率是时刻在变化着的,每一帧的比特率是不一样的,所以要计算VBR的MP3文件的总播放时间就有点复杂。可以通过下面的公式来总的播放时间:

总播放时间 = 总帧数 * (帧的采样个数 * 1 / 采样率)

(1)总帧数:VBR的MP3文件有两种Header:XING和VBRI,这两个Header中包含了一些信息,其中就包括总帧数。每个VBR的MP3文件只包含一种Header。要判断一个MP3文件是CBR还是VBR就是根据文件是否包含这两种Header中的一种,如果包含XING或者VBRI,就是VBR文件,如果都没有,那就是CBR。这两种Header只会在VBR的MP3文件的第一帧中出现,这里对这两种Header不作介绍。

(2)采样率:首先要对MP3文件的第一个帧的帧头进行解析,获得采样率的索引值,然后,查采样率索引表,即可得到采样率。1 / 采样率:表示每个采样的时长。

(3)帧的采样个数:首先要对MP3文件的第一个帧的帧头进行解析,获得MPEG的版本,然后根据MPEG的采样数索引表查找到帧的采样个数。比如:MPEG1,LayerIII,对应的就是1152。帧的采样个数 * 1 / 采样率:表示一帧的时长。

原创粉丝点击