# 音频剪辑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 数据所占内存将为保持压缩状态时所占内存的数倍,具体取决于音频数据的采样率和压缩方式。因此尽量对较小的音频文件使用此选项。