0

我目前正在研究 mp3 格式以构建 mp3 解码器。经过一番思考,我发现计算歌曲长度的最简单方法是将大小除以比特率(考虑到 ID3 标签的大小等),然后将结果转换为分钟。在几首歌曲上使用这种方法,我得到了准确的时间。我一直假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也被“考虑”为歌曲的一部分(在计算时间时)。另外,我知道mp3文件中的音频数据是经过压缩的,所以解压后的大小当然会变大,这样时间计算就显得不准确了。我在这里错过了什么吗?因为它对我来说没有任何意义,歌曲长度是用压缩数据而不是未压缩数据计算的,并且每个 DWORD 帧都不会被忽略。

4

1 回答 1

0

我一直假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也被“考虑”为歌曲的一部分(在计算时间时)。另外,我知道mp3文件中的音频数据是经过压缩的,所以解压后的大小当然会变大,这样时间计算就显得不准确了。

当媒体流(如 MP3 文件)以恒定比特率压缩时,该比特率反映的是数据的压缩大小,而不是未压缩的大小。所以你的数学很好。

这种方法会让你失望的是元数据标签(例如,ID3)——它们是文件大小的一部分,但不计入比特率,因为它们不是音频数据。幸运的是,这些往往相对较小,因此它们不会对您的结果产生太大影响。

于 2012-09-22T05:39:57.937 回答