也因此,最开始的原以为的第二种方法,和第一种,是同一种的想法,其实是错误的。正确的理解是,第二种方法的确是另外一个方法,而且更准确。
因为第一种方法:
CBR播放时间
= 文件大小(字节)× 8比特/字节 ÷(比特率 千比特/秒 ×1000 比特/千比特)
中的比特率,只是针对每一帧的音频的数据的,而并不包括4字节的帧头,而(参见上面的解释):“常见MPEG帧的音频数据大小是418字节”,所以,这样比较起来,至少是,没418+4=422的这一个帧,其中只有418个是真正的音频数据,而比特率,指的只是这个帧数据的比特率,并不包括4字节的帧头,如果也包含进去了,那么则产生了误差,误差大概是4/(418+4)=0.95%,即大概是百分之一的误差。
即,方法一,计算出来的CBR的播放时间,大概有1%的误差。
而第二种方法:
CBR播放时间
= 每一帧的时长 × 总的帧数
= 文件大小(字节)× ( 4 + (每一帧的采样个数÷每一帧的采样频率)× 比特率(千比特/秒)× 1000(比特/千比特)÷ 8比特/字节] ) )×(每一帧的采样个数÷每一帧的采样频率)
就把每一帧的4字节的帧头,也计算进去了,好处是计算出来的播放时间更加精确,坏处是,计算起来,相对第一种方法来说,比较麻烦。
而第一种方法,虽然有大概1%的误差,但是很容易计算。所以现实中,常用第一种方法。