4.1.2. 计算CBR的MP3的播放时间的方法之二

另外,多说一句,我原先以为,还有另外一种计算方法,即:

“总帧数乘于每一帧的时长法”

总的时长 = 每一帧的时长 * 总的帧数

就是先计算每一帧的时间长度,再计算一共有多少帧,然后将两者相乘,即可得到文件总时长。

其中:

= 每一帧的采样个数 * 每一采样的时长

= 每一帧的采样个数 * (1 / 每一帧的采样频率)

总的帧数

= 文件大小 / 单个帧的大小

= 文件大小(字节)* 8比特/字节 / ((每个帧的时长 * 比特率(千比特/秒) * 1000比特/千比特))

但是后来发现,上面这个计算总的帧数的方法,其实是不精确的,是把每一帧的4字节的MPEG帧头漏掉了。

因此,才会有之前的想法,认为这两种计算CBR的MP3的播放时间的计算公式是同一种:

此法,其实和上面的是同一个方法,因为上面两个等式相乘之后,即为:

总的时长

= 每一帧的时长 * 总的帧数

=每一帧的时长 * [总的文件大小(字节)* 8比特/字节 / ( (每个帧的时长 * 比特率(千比特/秒) * 1000比特/千比特) )]

= [总的文件大小(字节)* 8比特/字节 / [ 比特率 千比特/秒 * 1000比特/千比特)]

还是和上面的方法是,是同一个公式。

而对于上面的总的帧数的计算方法,真正正确的是:

总的帧数

= 文件大小 ÷ 单个帧的大小

= 文件大小 ÷ (帧头 + 帧数据)

= 文件大小 ÷ (固定的4字节 + 帧数据)

= 文件大小(字节)× 8比特/字节 ÷ ( 4 + [ 每个帧的时长 × 比特率(千比特/秒)× 1000(比特/千比特)] )

方法二,即为:

CBR播放时间

= 每一帧的时长 × 总的帧数

= (每一帧的采样个数 ×(1 / 每一帧的采样频率))×( 文件大小(字节)× 8比特/字节 ÷ ( 4 + [ 每个帧的时长 × 比特率(千比特/秒)× 1000(比特/千比特)] ) )

= 文件大小(字节)× ( 4 + (每一帧的采样个数÷每一帧的采样频率)× 比特率(千比特/秒)× 1000(比特/千比特)÷ 8比特/字节] ))×(每一帧的采样个数÷每一帧的采样频率)

其中:

文件大小:是总的MP3文件大小,减去MP3的Tag的大小。