我正在研究mp3格式以构建mp3解码器。 经过一番思考后,我发现计算歌曲长度的最简单方法是将大小除以比特率(考虑到ID3标签的大小等),并将结果转换为分钟。在几首歌曲上使用这种方法我得到了准确的时间。 我总是假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也被“考虑”为歌曲的一部分(在计算时间时)。 另外,我理解mp3文件中的音频数据是压缩的,所以当它解压缩时它的大小当然会更大,然后时间计算似乎不准确。 我在这里错过了什么吗?因为对我来说没有任何意义,歌曲长度是用压缩数据而不是未压缩数据计算的,而且每个DWORD的帧都不会被忽略。
答案 0 :(得分:0)
我总是假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也被“考虑”为歌曲的一部分(在计算时间时)。另外,我理解mp3文件中的音频数据是压缩的,所以当它解压缩时它的大小当然会更大,然后时间计算似乎不准确。
当以恒定比特率压缩媒体流(如MP3文件)时,该比特率反映数据的压缩大小,而不是未压缩的大小。所以你的数学很好。
这种方法会让你失望的是元数据标签(例如,ID3) - 这些是文件大小的一部分,但不计入比特率,因为它们不是音频数据。幸运的是,这些往往相对较小,所以它们不会对你的结果产生太大的影响。