为了下文的回答,先小小提醒一下:楼主提到的 “Ogg 格式”其实并不是音频编码格式, 在 OggVorbis 这个名称中的 Ogg 是一种容器格式,Vorbis 才是有损压缩的编码格式,因为 Vorbis 在数字音乐方面最常搭配使用的容器是 Ogg,以 .ogg 文件形式出现,所以容易产生误会。游戏业界一般较少使用 Ogg,而会直接利用 Vorbis 来编码音频,再采用自己的打包方式。
Vorbis 的确是目前游戏业界流行的有损压缩音频编码开放格式,虽然难以找到具体数据佐证这一点,但很多音频中间件比如 Wwise(Wwise | Audiokinetic)都重点支持 Vorbis 格式(Vorbis Encoder Parameters)可以侧面证明其流行性。
Wwise 官方文档中按平台给出了所支持的音频格式列表 Creating Audio Conversion Settings ShareSets
手游选用音频编解码格式一般需要考虑一些条件:
第 5 条是比较容易被忽视的,比如游戏音乐需要无缝循环播放,这也是为什么 mp3 不怎么在游戏界使用的原因之一(参见:Gapless playback,与原生支持采样点精度相比,mp3 需要客户程序包括游戏引擎/音频引擎的额外工作才能支持无缝循环), mp3 也不满足 第 1 条(Why you shouldn't use MP3 in your HTML5 games)。
很显然采用 PCM 这类非压缩格式因为包体大小问题在手游上是比较罕见的。iOS 上常见音频压缩格式选择就剩下了 AAC、ADPCM和 Vorbis。
再说下平台“支持”情况,iOS 其原生支持除了 @白碧磊 说的两种格式外,还支持 AAC(aac(高级音频编码)_百度百科) 硬件解码,也就是说 iOS 底层音频服务 CoreAudio 中有支持 AAC 有损压缩编码格式的 API,这些 API 可以利用 iOS 的硬件解码器来加速。但是 AAC 在游戏中的使用率似乎不是很高,它的主要弱点(参考:AAC Parameters):
由于以上原因,iOS 上 AAC 主要只在一些单轨音频播放时有价值比如剧情动画的对白。这样差不多还剩下 Vorbis 和 ADPCM,两者都主要依赖软件解码,Vorbis 的变码率压缩比可以高达 40:1 的实际效果,但解码 CPU 消耗高于 ADPCM;而 ADPCM 提供固定 4:1 的实际效果,但解码 CPU 消耗低于 Vorbis。所以各有千秋,在手游中目前包体是主要矛盾,所以 Vorbis 使用较广泛;但大量同时发声的音效可以考虑用 ADPCM 减轻 CPU 软解码压力。这几种格式在中间件比如 Wwise 中都有内建支持(注:ADPCM 依然有循环采样点精度问题但 Wwise 引擎有 loop fix 修正),所以如果采用中间件,一般程序员不用担心,格式工作主要由声音设计师在设计工具中设定完成,开发流程和游戏运行中整个编解码过程对程序员是透明的。
具体的格式性能数据比较可以参考这里: Version Tips and Best Practices
还有一些新兴格式比如 Opus(Opus (audio format)),但目前还没有成熟的支持,也没有听说过成功案例。
这篇英文博客也不错,总结了到 2014 年为止 iOS 原生支持的情况 Audio Tutorial for iOS: File and Data Formats [2014 Edition]
不过,苹果平台上的底层服务变化很快,不能确保答案几年后依然准确,如果依赖手动实现软件编解码器,则应该及时跟进苹果开发者文档的更新。但如今采用一款音频中间件会帮你大大节省格式选择和转码设置方面的压力,Wwise 这样的中间件还提供很多深入游戏业务的特性,可以帮你根据游戏的具体内容需要对不同的声音采用不同的编码压缩策略,智能选择一些参数,甚至提供实时合成声音的可能性(不需要存储播放音频数据),达到音频质量、包体和运算性能上的共赢,比手动编程要划算很多。
最后顺带提醒一下:不少游戏的音频部门为视效和其它部门作出了很大的牺牲,最终发布的时候被迫采用了较高的压缩比,所以经过精心设计的声音最后出来的声音效果都非常可惜。但声音设计对很多游戏体验和玩法是很关键的,有很强的产品差异化潜力,也应该享有足够的包体和内存预算;音频设计师一方面可以考虑利用中间件里面的声音多样化功能(比如 Wwise 的 Random Container 和 Source Editor 的一音多用编辑功能)来榨干每个声音文件的设计潜能,另一方面也应该在品质分析基础上和团队协商保证一些关键声音和音乐的压缩比不至于太低。这方面要安利一下腾讯天美音频团队在手游音频开发方面的心得:
Gad-腾讯游戏开发者平台视频的 1 小时 33 分左右,声音设计师张雁鸣老师讲解了他们在实战中对各种格式测试的结果。