4.1.3.1. 举例说明两种方法计算出结果的不同

我找了个CBR的MP3,用千千静听去查看其播放时间,推断出,其用的是第一种方法计算的。

具体推断过程如下:

(此处为了方便计算,忽略了MP3的Tag的大小,而把整个文件大小看作是MP3的所有帧的总大小)

该MPEG 1- Layer III的MP3:

文件大小=11777537 字节

采样个数:1152

采样率:44100Hz

比特率:96kbps

【方法一】

总时长

= 11777537 × 8 ÷(96 × 1000)

= 981.46

【方法二】

总时长

= 11777537÷(4 + (1152÷44100)×(96×1000÷8) )×(1152÷44100)

= 11777537÷(4 + 313.47)×0.02612

≈11777537÷(4 + 314)×0.02612

= 11777537÷318×0.02612

= 967.48

即,方法二,是精确的MP3的总时长,为967.48,而方法一,计算出来的是有误差的981.46,误差为 (981.46-967.48)/ 967.48=1.34%,即大概为1%。

而千千静听查看到此MP3的播放时间为:16:20.454 = 980.454秒,

考虑到我们上面用方法一算出来的MP3的播放时间是981.46秒,是把MP3的Tag也算进去了,所以去掉Tag的大小,就是千千静听上看到的980.454秒了。

【总结】

因此,虽然方法二计算出来的播放时间更准确,但是实际上,为了更简便的计算,往往采用了误差大概只有1%,(一般用户也可以接受此误差),的第一种方法:

CBR播放时间

= 文件大小(字节)× 8比特/字节 ÷(比特率 千比特/秒 ×1000 比特/千比特)