答案1
这是由 MP3 编码(或者实际上,编码和解码)的工作方式决定的。请参阅技术常见问题解答:
为什么解码后的 MP3 比原始 .wav 文件长?
因为 LAME(以及所有其他基于 MDCT 的编码器)在每首歌曲的开头和结尾添加了填充。LAME 将填充量嵌入 MP3 文件第一帧的辅助数据中。(LAME INFO 标签)。
继续:
全部解码器我已经测试过引入 528 个样本的延迟。也就是说,解码 mp3 文件后,输出将在前面附加 528 个 0 样本。这是因为 ISO 使用的标准 MDCT/滤波器组例程具有 528 个样本延迟。可以编写一个具有 0 个样本延迟的 MDCT/滤波器组例程(请参阅下面 LAME 编码中使用的 Takehiro 的 MDCT/滤波器组例程的描述),但我不知道是否有人这样做过。此外,由于 MDCT 帧的重叠性质,第一个颗粒的前半部分(1 个颗粒 = 576 个样本)没有前一帧可以重叠,导致前 N 个样本衰减。
如果你继续阅读,它会变得更加技术性,但这应该可以总结出这个问题。