开发立体混响声音频解码器
Instructions for implementing an ambisonic decoder plug-in and registering it in Project Settings.
阅读时间5 分钟最后更新于 1 个月前
立体混响声解码器是将立体混响声音频格式解码为特定输出格式(例如立体声或环绕声)的音频组件。此格式取决于扬声器配置(菜单:编辑 (Edit) > 项目设置 (Project Settings) > 音频 (Audio) > 默认扬声器模式 (Default Speaker Mode)),除非平台会重载此设置。
虽然 Unity 支持立体混响声音频,但默认情况下不提供内置解码器。相反,必须选择第三方解码器或使用您自己的解码器插件。
设置立体混响声音频解码器插件
您可以像设置空间音响一样设置立体混响声音频解码器。但是, 文件中的以下参数特定于立体混响声音频解码器插件:
AudioPluginInterface.hUnityAudioEffectDefinitionFlags_IsAmbisonicDecoder
在插件扫描阶段, 标记会通知 Unity 这是立体混响声解码器效果。要使插件作为立体混响声解码器工作,需要在效果的描述位字段中设置一个标记:
UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder`````definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;`````
Unity 会在项目设置窗口(菜单:编辑 (Edit) > 项目设置 (Project Settings) > 音频 (Audio) > 立体混响声解码器插件 (Ambisonic Decoder Plugin))中将您的插件列为选项。
UnityAudioAmbisonicData struct
UnityAudioAmbisonicDataUnityAudioSpatializerDataambisonicOutChannelsambisonicOutChannels 整数
立体混响声解码器放在 Unity 音频管线中非常靠前的位置, 会告知插件 Unity 需要使用多少个输出声道。 会自动设为 的声道数。
ambisonicOutChannelsambisonicOutChannelsDefaultSpeakerMode例如,如果播放具有 4 个声道的一阶立体混响声音频剪辑,并且扬声器模式为立体声(只有 2 个声道):
-
立体混响声解码器的进程回调将传入 4,以进行传入和传出声道计数。
-
字段会自动设置为 2。
ambisonicOutChannels -
插件会将其空间化数据输出到前 2 个声道,并将另外 2 个声道清零。
开发立体混响声音频解码器插件的步骤
按照以下步骤为 Unity 开发自己的立体混响声音频解码器插件:
-
使用原生音频插件 SDK 创建自定义音频插件。
-
在效果的描述位字段中设置一个标记:definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
-
配置完插件后,请编译文件。确保在首选平台上可编译。
-
或者,将文件转换为 .dll 文件。
-
将插件文件移动到 Unity 项目的 Asset 文件夹中。
有关如何在 Unity 中使用立体混响声音频插件的更多信息,请参阅立体混响声音频。
Unity 立体混响声支持的格式
Unity 立体混响声源框架可以支持一阶立体混响声。插件接口包含用于支持双耳立体声、四声道输出的信息,但由插件自行决定支持哪些输出。
最初,立体混响声解码器插件支持一阶立体混响声源和双耳立体声输出。不支持二阶立体混响声。
框架中未提供任何特定于不同立体混响声格式的内容。如果剪辑的格式与立体混响声解码器插件的预期格式相匹配,立体混响声应该可以正常工作。Unity 的首选立体混响声格式是 B 格式(按照 ACN 组件排序并采用 SN3D 标准化)。