Ogg 是由 Xiph.Org Foundation 推出的开放容器格式,该基金会是一家开发免版权费媒体技术的非营利组织。扩展名为 .ogg 的文件几乎总是指用 Ogg 容器封装的 Vorbis,这是一种为替代 MP3 而设计、免专利的有损音频编码格式,所以人们常说 Ogg Vorbis,指的就是这两者的组合。你会在开源软件、游戏配乐、语言与发音资料库,以及不想为托管音频而支付授权费用的网站上遇到这些文件。
包含编解码器的容器
Ogg 本身不进行压缩。它是一个封装格式,会将媒体流切分成一页一页,每页带有校验和和位置标记,这样播放器就可以校验数据、跳到中间的某个位置,甚至追踪没有明确结束点的直播。多个流可以交错存储在同一个文件中,这就是音频和视频一起传输的方式。除了 Vorbis 之外,Ogg 还可以封装 Opus、FLAC、Speex 以及 Theora 视频编码器,因此 Xiph 建议,对于不使用 Vorbis 的 Ogg 音频使用 .oga 扩展名,对视频使用 .ogv 扩展名。
通常封装在里面的 Vorbis 编码器是有损的:它会将短时间的波形片段转换为频率,并丢弃听众不太可能察觉的细节,而被丢弃的内容无法恢复。它天生支持可变比特率,在音乐复杂处多分配数据,在安静片段减小数据量。它还依赖码本,每个文件在自己的头部携带码本信息,这也是为什么在相同体积下,它的音质长期以来都能与 MP3 抗衡的原因之一。
OGG 文件包含哪些元数据
Vorbis 使用Vorbis comments(与 FLAC 相同的方案)在专用的头部数据包中保存标签。一个 Vorbis comment 只是由字段名、等号和纯文本值组成,这让系统非常灵活:字段名不受官方列表限制,同一字段可以出现多次,因此一首曲目如果署名了三位表演者,只需包含三行 ARTIST。
推荐使用的字段名与预期相符:TITLE、ARTIST、ALBUM、TRACKNUMBER、DATE、GENRE、DESCRIPTION、COMPOSER、PERFORMER、COPYRIGHT、LICENSE、ORGANIZATION、VERSION 和 ISRC。其中有两个标准字段按设计会包含个人信息,需要特别留意。LOCATION 用于记录录音发生的地点,CONTACT 用于记录与创作者或机构联系的方式,实际上通常是邮箱地址或个人网站。它们都不会自动填写,但录音和实地采集类应用会使用这些字段。
除了标准字段名外,还会有由软件处理链添加的各种内容。ENCODER 字段给出生成该文件的具体程序及版本,你也可能看到重放增益(replay gain)测量值、将专辑链接到在线音乐数据库的标识符,以及一个 COMMENT 字段,里面可以是用户输入的任何文本。封面图片在这里比较特殊:它不是使用单独的结构,而是作为编码后的图像存储在某个评论字段中。旧文件有时会在前面附着一个被不够规范的打标签程序写入的 ID3 标签。播放器可能会忽略它,但元数据报告仍然会显示其中的内容。
何时使用 OGG
在需要考虑授权问题、需要在软件或游戏中内置音频,或只是想要良好的有损音质且无需支付授权费用时,Ogg Vorbis 是一个稳妥的选择。浏览器和桌面播放器对它的支持都很好。它的弱点在于硬件:车载音响、老款手机和许多便携播放器通常只识别 MP3 或 AAC,因此在笔记本上播放完全正常的文件,在车载屏幕上可能根本不会出现。在 Xiph 自家家族中,如今进行新工作时更推荐使用 Opus 编码器,它与 Vorbis 一样封装在 Ogg 页面中,因此这类文件使用 .opus 扩展名。