从 MP4 文件中提取 AAC 音频的“正确”方法?

从 MP4 文件中提取 AAC 音频的“正确”方法?

我使用 Linux(Kubuntu 16.04),我有一些带有音轨的 .MP4 文件,我想提取它们并保存为 .AAC/.M4A 文件和标签。

现在,我一直在使用

MP4Box -raw $track_index my_file.mp4

其中轨道索引可以是 0、1、2 等等。这是可行的,因为我可以在各种媒体播放器中播放结果......但是 - 真的可以吗?

有人看过我的文件并告诉我:

文件头部缺少“ftyp”字段,该字段可将其标识为 MPEG 4 容器。此外,也没有“mdat”字段,该字段可指示 MPEG 4 容器内的单个数据块。

这使得某些应用程序难以处理我提取的文件。具体来说,标记应用程序……拒绝为其写入标记。

我该怎么做才能获得结构正确、可标记的 M4A/AAC 文件?(我自然在寻找命令行解决方案。)

答案1

不要使用“raw”。使用“single”。然后将扩展名更改为 .m4a。

来自MP4Box文档:

-single TrackID : extracts track in a new MP4 with a single track.

我随机选取了一个 MP4,并使用这两个选项提取音频。然后我使用 Media Info 检查它们。原始选项输出的文件格式为 ADTS,而单一选项输出的文件格式为 MPEG-4。

似乎 -raw 会生成传输流文件,不支持标签等元数据。当我使用应用程序 Tagger 时,它甚至看不到 -raw 输出文件,而它允许我打开 -single 输出并编辑其标签。

https://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation/

相关内容