在性能方面,我应该使用 AVAudioEngine 来获得多种音效吗?

performance wise, should I use AVAudioEngine for multiple sound effects yes or no?

性能方面,使用 AVAudioPlayerNode 实例和

是否更好

一个。一个 AVAudioEngine 实例,我将多个音效连接到它的混音器

乙。每个音效的 AVAudioEngine 的单独实例?

我之所以使用 AVAudioEngine 是因为我正在使用 AVAudioUnitVaryspeed 进行一些音频处理,但是每个音效都可以(并且是)独立的,所以我想知道是否有人知道什么是最好的?

是否可以为每个效果使用 AVAudioEngine 及其节点,或者我应该管理单个引擎实例并在播放声音时连接/断开节点?

您应该管理一个 AVAudioEngine 实例,您的所有效果器和播放器都连接到该实例,并且在声音播放时管理 connect/disconnect 个节点。

由于性能开销,拥有多个 AVAudioEngine 实例不是问题,但因为实时管理它们会变得太复杂,让它们都响应 AVAudioSession.routeChangeNotificationAVAudioSession.interruptionNotification,保持所有玩家同步,使用 renderOffline 测试每个玩家,等等。

我建议您观看 WWDC 2014 Session 502 - AVAudioEngine in Practice,以获得对此的良好介绍 API。他们提出的一个用例与您的非常相似——他们只使用一个 AVAudioEngine 实例 :-)