Parsing (非vbr)mp3文件的长度(时间)

Parsing (非vbr)mp3文件的长度(时间),parsing,mp3,compression,Parsing,Mp3,Compression,我目前正在研究mp3格式,以建立一个mp3解码器。 经过一些思考,我发现计算歌曲长度的最简单方法是将大小除以比特率(考虑ID3标签的大小等),然后将结果转换为分钟。在几首歌中使用这种方法,我得到了准确的时间。 我总是假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也是歌曲的一部分(计算时间时)。 另外,据我所知,mp3文件中的音频数据是压缩的,因此当其解压缩时,其大小当然会更大,然后时间计算似乎不准确。 我是不是遗漏了什么?因为歌曲的长度是用压缩数据计算的,而不是用未压缩的数据计算的,这对我

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

我总是假设歌曲的时间是纯音频数据的长度,但在这种方法中,帧也是歌曲的一部分(计算时间时)。另外,据我所知,mp3文件中的音频数据是压缩的,因此当其解压缩时,其大小当然会更大,然后时间计算似乎不准确

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

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