【问题标题】:performance wise, should I use AVAudioEngine for multiple sound effects yes or no?性能方面,我应该使用 AVAudioEngine 来获得多种音效吗?
【发布时间】:2020-12-09 01:26:54
【问题描述】:

在性能方面,使用AVAudioPlayerNode 实例是否更好

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

B.每个音效都有一个单独的AVAudioEngine 实例?

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

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

【问题讨论】:

  • 过早优化?如果您没有遇到实际问题,请以最简单最自然的方式执行此操作。
  • 我仍然想知道其他人是否遇到过这个问题,因为我想以最好的方式编写这个音频库。无需投反对票????????????????
  • 我的意思是你的问题不包含任何“问题”。
  • @matt 我不同意,这是一个关于 AVFoundation 最佳实践的基本但有效的问题。
  • @Eric 我认为意图很明显——AVAudioEngine 被设计为一次只运行其中一个。我对 OP 的回应是问为什么会有问题。

标签: ios swift avaudioengine


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2017-06-12
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多