AudioLink概述

AudioLink 是一个API,用于将虚幻音频引擎关联到外部软件,例如其他音频引擎。借助硬件抽象,AudioLink绕过了对硬件的直接访问,能同时发挥虚幻音频引擎和关联外部软件的优势。

AudioLink借助三种链接类型来传输数据。

  • 源(Sources) - 输出预衰减来源的脉冲编码调制(PCM)数据。支持的来源包括MetaSounds、Sound Cues和Sound Waves。
  • Submix - 输出特定Submix的PCM数据。
  • 音频组件(Audio Component) - 从音频组件使用的预衰减源输出PCM数据。它与独立源的处理方式不同,使用的是不同的API。

根据实现方式,你可能需要自定义设置。通常情况下,实现方在虚幻引擎(UE)的启动阶段会注册一个 AudioLink Factory,用于启用AudioLink。

在虚幻编辑器中,每个链接类型都有一个 Send to AudioLink 参数,用来启用传输,以及一个 AudioLink设置 参数,用来选择修改默认设置。即使AudioLink被禁用,这些选项也会持续存在,所以不会有任何损失。

启用源传输

AudioLink属性可以通过与音源相关的 音效衰减 资产进行访问。在源的 细节(Detail) 面板中,在 衰减(Attenuation) > 衰减设置(Attenuation Settings) 下找到或创建相关资产。

你可以在音效衰减资产的 细节 面板,在 衰减(AudioLink) 中,设置 启用发送到AudioLink 标志和 AudioLink设置覆盖 属性。

尽管名字如此,但音效衰减资产的功能是源属性的集合,而不是专门用于衰减。

启用Submix传输

你可以在Submix的 细节 面板中,在 AudioLink下,设置 发送到AudioLink 标志和 AudioLink设置 属性。

将相同的Submix和音源组合在一起,会导致混合音频发生堆叠和过响。

启用音频组件传输

音频组件支持已经包括在AudioLink中,但通常情况下是不必要的。因为源在设计上是无组件的,为缩放进行了高度优化,并提供引擎级支持。然而,有些情况下必须使用音频组件,例如用于光线投射空间化。

根据具体实现,你可能需要自定义音频组件的传输。不过,蓝图的接口是标准化的。实现 AudioLinkBlueprintInterface ,提供对以下API的访问。

Blueprint Interface

  • 在 SetLinkSound 函数上,你可以把 NewSound 设置为任何 USoundBase 对象,包括MetaSound、Sound Wave或Sound Cue。
  • 我们特意其将命名为 PlayLink,好让你可以将它与其他"播放"调用一起纳入组件。如果有必要,你可以重定向PlayLink功能。

你可以用 au.audiolink.enabled 控制台变量禁用AudioLink。

限制

  • 同时运行一个以上的音频引擎会产生额外的开销。尽管虚幻音频引擎经过高度优化,但是我们建议你在项目中评估使用情况。
  • 由于硬件共享的限制,硬件解码器不支持在UE内部运行的源。然而,UE支持高效的软件解码器,如Bink Audio和Ogg Vorbis。
  • AudioLink目前最多只支持八个通道的音源。
  • 目前不支持Ambisonic音源或基于对象的格式。

故障排除

  • 使用控制台命令 log LogAudioLink All 来向日志输出更详细的信息。
  • 请确保你在UE注册了AudioLink Factory。日志信息将表明它是否正常运作。
  • 确保你在源或Submix上启用 发送到AudioLink 标志。
  • 对包含同一信号链的源和Submix的配对要格外小心,因为这可能导致数据重复,并导致过响和不需要的音频堆叠。
  • 每个编辑器和游戏窗口,包括Play In Editor(PIE),都有自己的虚幻音频引擎实例。这个实例很有用,但在生命周期管理上可能会引起一些麻烦。比如,编辑器的Submix在Startup阶段实例化。由于这类实例化出现在早期,如果AudioLink Factory没有在早期即使实例化,它可能会错过Submix。请仔细调整你的实例化生命周期。