# 音频剪辑audioclip
音频剪辑audioclip包含可供音频源AudioSource使用的音频数据,以及针对该数据的一些配置信息。导入音频资源时会自动生成audioclip资源。受支持的音频文件格式可参考这里。
# 声道
音频系统支持单声道、立体声和多声道音频资源,但不支持变更音频资源的声道设置。由于最终处理音频数据的硬件设备可能只支持单声道或立体声,因此可能需要进行混频。具体混频策略可参考这里
# 解码和采样率
audioclip资源默认导入的音频文件均为已压缩的音频数据,因此在播放前会自动解码为32位深PCM格式数据。每一个解码过程均在各自独立的解码线程中完成,它们是相互不影响的,也不会阻塞游戏渲染。
- 受支持的音频文件格式中,.wav(Wav PCM Linear)一般保存的是16位深的PCM数据,解码时会扩展为32位深PCM数据以便运算处理,由于无需做额外的格式转换,因此解码性能最佳。.ogg(OGG Vorbis)和 .m4a(MP4(AAC - Advanced Audio Coding))解码性能均优于 .mp3 ,但 .ogg 音频文件用于音频源AudioSource播放时,在ios设备上不受支持,因此推荐使用 .m4a 作为音频文件压缩格式。
- 音频系统默认采样率因硬件设备不同而有所区别。在PC上为48kHz,ios和安卓上为44.1kHz,因此音频解码后会自动重采样为音频系统的默认采样率。PC和ios设备上重采样性能较佳,性能较好的设备其耗时可以忽略不计。但是安卓重采样性能较差,如重采样30秒音频文件,即使高端安卓也需要花费上百毫秒的时间,低端安卓更甚。虽然重采样在独立的解码线程中完成,不阻塞游戏渲染,但若对播放延迟有较高要求,推荐将音频采样率设置成44.1kHz,以便规避安卓上的性能问题。
# 可配置属性
在Project面板选中音频文件,则可以在Inpsector面板配置相关属性。
属性 | 功能 |
---|---|
length | 音频时长,单位秒。当设置为<=0时,自动重新获取音频时长。当preloadAudioData=false 且 audioclip被用于时间轴系统时,此属性才有用。 |
preloadAudioData | 是否把音频下载到本地。 |
-- true | 当通过engine.loader.load或其他方式加载audioclip资源时,会把音频文件下载到本地。播放音频时,实际是播放一个本地音频文件。只有preloadAudioData=true时,audioclip才能用于AudioSource。大于9M的音频文件只能设置preloadAudioData=false。 |
-- false | 设置了false,该audioclip只能使用基础音频接口播放。此时是边播放边下载。 |
loadType | 设置audioclip的加载方式。只有当preloadAudioData=true时,此属性才有效。 |
-- Compressed_In_Memory | 加载audioclip后,音频数据在内存中保持压缩状态,播放时才解码为PCM。由于播放时才解码音频,因此会带来轻微的播放延迟。Compressed_In_Memory选项应尽量用于较大的音频文件,因为Compressed_On_Load加载时解码将占用大量内存。 |
-- Decompressed_On_Load | 加载audioclip后,立即将音频数据解码为PCM。由于加载后立即解码,故可降低因解码所带来的轻微播放延迟。但解码后的PCM数据所占内存将为保持压缩状态时所占内存的数倍,具体取决于音频数据的采样率和压缩方式。因此尽量对较小的音频文件使用此选项。 |