.aac 和 .m4a 文件中音频数据在字节级别的差异

use*_*267 6 audio aac m4a

这是为了尝试理解 aac 文件结构

为简单起见,我们可以假设 m4a 文件仅包含 aac 音频(即没有视频)

我正在比较 m4a 文件和使用 faac 库从 m4a 文件生成的 aac 文件

两个文件的字节级对比截图如下:

在此输入图像描述

上半部分是m4a文件,下半部分是aac文件

对于第一帧,从下部开始,AAC ADTS 标头是,FF F9 4C 80 12 3F FC这里这里开始,实际的 aac 音频数据应该有 138 字节

从下半部分我们可以看到来自 的字节与上窗口中的数据块(绿色部分)相 DE匹配80

我假设我已经在 m4a 文件中找到了实际 aac 音频数据存储位置的偏移量。我虽然21 4C ...上面的窗口中的字节包含了下一帧 aac 音频的所有字节,如果我们看下面的窗口,我们确实可以看到... a3 80(下面的窗口中绿色部分的末尾)后面是另一个 ADTS 标头(FF F9 4C 80 12 1F FC,表示下一个 aac 帧中的音频数量应为 137 字节)

然而,从aac文件中读取的字节与预期的m4a文件中的字节不匹配,如下图所示:

在此输入图像描述

它们匹配到某个点,但之后的一切看起来都是随机的。

m4a 文件和从它创建的相应 aac 文件在字节级别上有什么关系?

主要目标是能够修改这个 matlab 项目(它接受 m4a 输入并解码为原始 wav 数据)以直接从 aac 文件读取 aac 音频数据,然后使用该 matlab 项目中的 aac 解码器功能。