音频的性能开销主要有两点:内存开销和CPU开销。
其中Load Type有三种类型:
- Decompress On Load:音频文件在加载完毕后,会被全部解压到内存中。这种方式会占据大量的内存,然而在播放时,由于音频之前已经被解压,所以其对CPU的开销很小。
- Compressed In Memory:音频文件以压缩格式存放于内存中,一边播放一边进行解压。这种模式的内存开销会比前一种稍小,但是播放时的CPU开销会较之更大。
- Streaming:音频文件不会被加载到内存,只有即将播放的一小段才会被读取到内存中。这种模式的内存开销最低,但是CPU开销也最大,因为其伴随着大量的磁盘读写操作和解压缩。
Compression Format主要也可以分为三种类型:
- PCM:完全不压缩格式,占据的硬盘和内存相对会较大,由于运行时不需要解压,所以它的CPU开销最小。
- ADPCM:一种古老的压缩格式,相对于PCM的压缩比为3.5:1,但是运行时的解压开销很小,对于音质有一定损耗。
- Vorbis/MP3:常见的压缩格式,主流平台全部支持的格式,压缩比较高,但是运行时的解压缩开销较大,对于音质的损耗更加严重。在iOS平台上一般设置为MP3,因为iOS支持MP3格式的硬解码。
项目选择
- 对于背景音乐,采用Compressed In Memory+Vorbis/MP3,因为背景音乐通常较大较长,所以内存开销就会比较大,这时候我们应该优先关注内存,同时也要使CPU开销没有Streaming那么大。
- 对于时长较短且频繁播放的音效,比如按钮点击音效,采用Decompress On Load+PCM,因为非常短的音效文件很小,所以内存开销就不那么关键,可能由于要播放多次,这时候CPU开销就很关键。
- 对于一般的音效,采用Compressed In Memory+ADPCM,你需要去试听其效果,如果觉得ADPCM失真太严重,可以将其换成PCM。