MP3文件中的主要结构是否真实?

Sum*_*Tea 6 audio mp3 mpeg codec

我现在正在对MP3文件进行解码,但是对MP3文件只有一些基础知识。这些天,我为MP3实现了一个简单的解码器。在将解码结果与Maaate解码器进行比较时,我遇到了这个问题。

我的解码器比Maaate解码器多提取一帧。在仔细检查了示例MP3文件的结果之后,我发现第一帧异常。对于我的样本文件,第一帧的长度为413个字节,帧头0xfffb9064不同于所有其他具有100个字节长和header的帧0xfffb1064

我的问题是:结果中的第一个“框架”是真实框架吗?是这样,为什么它看起来与别人不同?如果不是,此结​​构用于什么,以及如何将它们与其他结构共享,因为它们都共享帧同步代码0xfff

Joh*_*ley 4

MP3 流没有文件头。开始时只有一帧比其余帧长,这听起来有点奇怪,但这是完全合法的。

标题中的位的快速描述位于:http://www.datavoyage.com/mpgscript/mpeghdr.htm

在您的情况下,两种类型的标头具有共同点:

  • MPEG-1
  • 第3层
  • 不受保护
  • 44.1kHz
  • 无填充
  • 不是私人的
  • M/S联合立体声
  • 无版权
  • 原创媒体
  • 没有强调

第一帧与其余帧的不同之处在于:

  • 128kbit(产生 417 字节帧减去 4 字节标头)

其余的是:

  • 32kbit(产生 104 字节帧减去 4 字节标头)

该页面中有一个公式用于根据标头计算帧大小:144*比特率/采样率+填充。

我怀疑 128kbit 第一帧是用于生成样本的编码器的伪影(错误)。第一帧之后,它仍然是 32kbit 的恒定比特率文件。鉴于 MP3 解码器只有几帧才能产生输出,并且不会在中途突然出现比特率波动,因此这不太可能造成任何干扰。