文件格式

AAC - 高级音频编码

AAC 是继 MP3 之后出现的有损音频压缩格式,如今承载了大部分流媒体音乐和视频的声音。一个裸 AAC 文件只包含音频帧,几乎不含其他内容。

.aac

AAC 全称为 Advanced Audio Coding,是在 MP3 之后出现、并被设计用来取代 MP3 的有损音频压缩格式。它由 Fraunhofer IIS、Dolby、AT&T、Sony 和 Nokia 等多家公司在 20 世纪 90 年代共同开发,并由动态影像专家组(Moving Picture Experts Group)作为 MPEG-2 标准的一部分发布,之后又被纳入 MPEG-4 标准。你几乎每天都会在不知不觉中听到它:大多数视频文件、数字广播、流媒体应用,以及几乎所有在网上商店购买的音乐,声音部分都是 AAC。

编码格式,而不是文件格式

理解这一点是看懂 AAC 的关键:AAC 是一种编解码器(codec),是一种压缩和解压缩声音的方法,而不是真正的存储方式。像 MP3 一样,它是有损的:把音频切分成短块,转换为频率,并丢弃听众不太可能听到的部分。但 AAC 使用更大、更灵活的块和更先进的算法,因此在相同比特率下通常比 MP3 听起来更好。它有多个配置:普通的 AAC-LC 是日常常用的配置,而 HE-AAC 会单独重建高频部分,在极低比特率下依然能保持可用的音质。

由于它只是一个编解码器,AAC 音频通常会封装在一个可以组织音频流和标签的容器中。这个容器通常是 MP4,这就是为什么大多数 AAC 音乐文件的扩展名是 .m4a 而不是 .aac。真正以 .aac 结尾的文件,通常是一个裸的音频数据传输流(Audio Data Transport Stream):只是一帧帧连续的 AAC 数据,每一帧前面只有一个很小的头部,给出配置、采样率和声道布局。这样的文件可以播放,也可以剪切和拼接,但除了音频本身以外没有额外的结构。

AAC 文件包含哪些元数据

对于原始流来说,老实说,它几乎不包含任何元数据。里面没有用于存放标题、艺术家或日期的位置。帧头只描述如何解码音频,而没有其他信息,因此对一个裸 AAC 文件生成的元数据报告,通常只会显示配置、采样率、声道数和时长。这并不是报告的缺失,而是因为文件中确实没有更多内容。

有两点会让情况变得更复杂。第一,有些软件会把与 MP3 使用的相同类型的 ID3v2 标签粘在 AAC 流的开头。这只是一个约定,而不是标准的一部分,但确实可行,所以你最终可能仍然会看到标题、艺术家、专辑、封面图片以及编码器名称等信息。偶尔也会以同样方式使用 APE 标签。第二,而且更常见的是,人们口中说的 AAC 文件,其实往往是一个 MP4 文件。此时元数据属于容器,并且内容很丰富:包括 iTunes 风格的标题、艺术家、专辑艺术家、音轨号、年份、流派、作曲者、评论、封面图和编码工具等条目,以及写在容器头部的创建和修改时间戳。

如果你在意隐私,这种区别就很重要。一个裸 AAC 流几乎不会泄露任何关于你的信息。一个 MP4 封装则可能携带生成该文件的软件名称、他人输入的评论,以及在购买曲目的情况下,购买账户的邮箱地址、账户持有者的姓名和购买日期。因此,在纠结一个 AAC 文件会暴露什么之前,应先弄清它实际是什么。元数据报告可以告诉你,你看到的是原始流还是一个容器。

何时使用 AAC

当你需要在文件体积适中、保持良好音质的同时,还能在普通手机、浏览器、车载系统和电视上播放时,可以选择 AAC。与 MP3 相比,它在相同比特率下提供更好的音质,并支持更多声道和采样率。与 Opus 相比,它在低比特率下效率略逊一筹,但在硬件支持上更有优势。如果你打算给文件添加标签,建议将 AAC 音频存放在 MP4 容器中,使用 .m4a,而不是保留为原始流,因为标签只能存放在容器中。