FLAC 是 “Free Lossless Audio Codec”(自由无损音频编码格式)的缩写,它名副其实:在不改变任何一个采样的前提下,让音频文件变得更小。该项目由 Josh Coalson 发起,目前由 Xiph.Org 基金会维护,这是一家同时负责 Vorbis 和 Opus 的非营利组织。该格式及其参考软件都是开放且免版税的,这也是 FLAC 成为归档 CD 收藏的标准方式,以及独立音乐人运营的音乐商店中常见下载选项的原因之一。
FLAC 如何在无损的情况下压缩
与 MP3 相比,“无损压缩”听起来像是矛盾,但它和 ZIP 压缩包的原理相同,只是针对声音进行了优化。FLAC 将音频拆分成多个数据块,并为每个数据块拟合一个简单的数学预测,判断波形接下来会如何变化。然后只存储该预测以及剩下的少量误差,并使用高效的编码方案加以压缩。解码时再次运行相同的预测,并把误差加回去,从而逐位还原原始采样。能节省多少空间取决于音乐本身,但同一段录音,FLAC 文件通常比 WAV 小得多。
FLAC 支持最多 8 个声道、超过 CD 品质的位深和非常高的采样率。和 MP3 一样,它基于帧结构,因此可以在不预先读取整个文件的情况下进行流式传输和任意跳转。其文件头还会保存未压缩音频的 MD5 指纹,这样软件在很多年后依然可以证明文件解码结果与最初抓轨内容完全一致。相同的编码格式也可以封装在 Ogg 容器中,不过你通常遇到的是普通的 FLAC 文件。
FLAC 文件包含哪些元数据
一个 FLAC 文件以一系列元数据块开头,每个都承担特定职责。STREAMINFO 是技术信息块,并且始终存在:包括采样率、声道数、每采样位数、采样总数以及那个 MD5 指纹。SEEKTABLE 帮助播放器进行快速跳转,CUESHEET 可以描述整张 CD 的曲目布局,PICTURE 保存内嵌封面及其类型和说明,而 PADDING 只是预留的空白空间,便于之后编辑标签而无需重写整个文件。
描述性标签位于 VORBIS_COMMENT 块中,采用与 Ogg 相同的标签系统。它是一组纯文本键值对列表,每一项由字段名和值组成,因此不受固定字段集合的限制。TITLE、ARTIST、ALBUM、ALBUMARTIST、DATE、TRACKNUMBER、DISCNUMBER、GENRE、COMPOSER、PERFORMER、COPYRIGHT、ISRC 和 COMMENT 都很常见,而且任何字段都可以出现多次,例如用来给一首曲目标注两位艺术家。
由于任何程序都可以自定义字段,这个块往往既反映音乐本身,也反映制作它的软件链。ENCODER 会标明生成该文件的编码器名称和版本。抓轨软件会添加自己的条目:把光盘关联到在线音乐数据库的标识符、评分、播放次数、回放增益测量值,有时还包括读取该 CD 的光驱信息。这些自由字段也是个人备注、真实姓名或电子邮箱地址被写入的地方,如果有人在标签编辑器中输入了这些内容。FLAC 没有标准的“位置”或“设备”字段,因此音乐文件很少透露你当时身在何处,但任何用户或应用程序写入的内容,都会以可读文本的形式保存在这里。
何时使用 FLAC
FLAC 是保存音频的合适选择,例如 CD 收藏、母带录音,以及任何将来可能需要再次转换的内容。与 WAV 相比,它在文件大小和标签支持上更有优势,同时依然与来源在比特层面完全一致。与 MP3 或 AAC 相比,FLAC 体积要大得多,因此不太适合存储空间很小的手机或访问量很高的网站。Apple 设备更偏向使用 ALAC,这是一种基于相同理念的无损格式,在二者之间转换不会有任何损失,因为它们都保留了每一个采样。