在性能方面,我应该对多个声音效果使用AVAudioEngine是还是否?

问题描述

性能方面,最好将AVAudioPlayerNode实例与

一起使用

A。一个AVAudioEngine实例,我将多个声音效果连接到其调音台

B。每个音效都有单独的AVAudioEngine实例吗?

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

可以为每个效果配备一个AVAudioEngine及其节点吗?还是应该管理一个引擎实例并在播放声音时连接/断开节点?

解决方法

您应该管理一个连接了所有效果器和播放器的AVAudioEngine实例,并在声音播放时连接/断开节点。

拥有多个AVAudioEngine实例并不是一个问题,这是因为会增加性能,但是因为它太复杂而无法实时管理所有实例,让它们都对AVAudioSession.routeChangeNotification和{ {1}},保持所有玩家同步,使用AVAudioSession.interruptionNotification测试每个玩家,依此类推。

我建议您观看WWDC 2014 Session 502-实践中的AVAudioEngine,以获取对该API的良好介绍。他们提出的一种用例与您的非常相似–他们仅使用一个renderOffline实例:-)