Audio MP3文件中的前导结构是真实帧吗?
我现在正在做一些解码MP3文件的工作,但只是对MP3文件有一些基本的了解。最近我为MP3实现了一个简单的解码器。当比较解码结果和解码器的结果时,我遇到了这个问题 我的解码器比Maaate解码器多提取一帧。在仔细检查一个示例MP3文件的结果后,我发现第一帧不正常。对于我的示例文件,第一个帧的长度为413字节,帧头为Audio MP3文件中的前导结构是真实帧吗?,audio,mp3,codec,file-format,mpeg,Audio,Mp3,Codec,File Format,Mpeg,我现在正在做一些解码MP3文件的工作,但只是对MP3文件有一些基本的了解。最近我为MP3实现了一个简单的解码器。当比较解码结果和解码器的结果时,我遇到了这个问题 我的解码器比Maaate解码器多提取一帧。在仔细检查一个示例MP3文件的结果后,我发现第一帧不正常。对于我的示例文件,第一个帧的长度为413字节,帧头为0xfffb9064,与所有其他帧的长度为100字节,帧头为0xfffb1064 我的问题是: 结果中的第一个“帧”是真实帧吗?是的,为什么它看起来和其他的不同呢?如果不是,此结构用于什
0xfffb9064
,与所有其他帧的长度为100字节,帧头为0xfffb1064
我的问题是:
结果中的第一个“帧”是真实帧吗?是的,为什么它看起来和其他的不同呢?如果不是,此结构用于什么以及如何将其与其他结构区分开来,因为它们都共享帧同步代码
0xfff
?MP3流没有文件头。听起来有点奇怪,一开始只有一帧比其他帧长,但这是完全合法的
标题中的位的快速描述如下:
在您的情况下,两种类型的头共享相同:
- MPEG-1
- 第三层
- 不受保护
- 44.1kHz
- 没有填充物
- 非私人
- M/S关节立体声
- 没有版权
- 原始媒体
- 不强调
- 128kbit(导致417字节帧减去4字节头)
- 32kbit(导致104字节帧减去4字节头)
我怀疑128kbit的第一帧是用于生成样本的编码器的伪影(bug)。在第一帧之后,它仍然是一个32kbit的恒定比特率文件。考虑到MP3解码器只有几帧才能产生输出,并且不会在中途突然出现比特率波动,这不太可能打乱任何东西。第一帧很可能是VBR帧。
检查并使用hexa编辑器。希望它能有所帮助第一帧可以用作通常所说的“LAME标签”(尽管生成器的名称不一定是LAME) 当编码器还不知道未来的数据是什么时,已经有(并且可能仍然有)一种在ffmpeg中创建此标记的方法,因此ffmpeg将只使用一些默认值,例如128kbps,而不是MP3数据中定义的速度 因此,无论您是否有CBR或VBR数据,都不能基于该帧 要查看是否有这样的标记,请至少打印出前64个字节(或使用十六进制编辑器),您应该看到字母“Info”(CBR)或“Xing”(VBR)非常接近开始(通常在字节0x24左右)。
eyeD3
和ffprobe
能够解码该标签
我有一页是关于格式的。这不是正确的公式。正确的公式是:frame_samplerate/8*比特率/samplerate+填充为什么会被否决?从我看来,第一帧不正常的原因是合理的。