【问题标题】:Does AUGraph deprecation means no more audio render callbacks?AUGraph 弃用是否意味着不再有音频渲染回调?
【发布时间】:2019-06-26 18:04:55
【问题描述】:

我有一个带有详细渲染回调的应用程序,我怀疑它是否可以使用 AVAudioEngine。

无论如何要使用我的 AUGraph 渲染回调(带有多个总线)和 AVAudioEngine 吗?

任何示例代码?

【问题讨论】:

    标签: audio core-audio avaudioengine ios13 augraph


    【解决方案1】:

    Audio Unit API 没有被弃用,只有可能构建在它之上的 AUGraph。

    使用AudioUnitSetPropertykAudioUnitProperty_MakeConnectionAudioUnitConnection 结构建立连接。

    使用AudioOutputUnitStartAudioOutputUnitStop 启动和停止输出单元。

    使用AudioUnitSetPropertykAudioUnitProperty_SetRenderCallbackAURenderCallbackStruct 设置渲染回调

    除了一点簿记和更简单的连接语法之外,AUGraph 并没有给您提供太多东西。

    【讨论】:

    • 感谢 dave234。我看到了带有 AUGraphNodeInfo 的 MixerUnit ... 比如 AUGraphNodeInfo(processingGraph,mixerNode,NULL,&mixerUnit);
    • 如何在没有AUGraphNodeInfo的情况下设置mixerUnit?
    • 我不明白这个问题。
    • 我的疑问是......还有比 AUGraphNodeInfo 设置mixerUnit ( kAudioUnitSubType_MultiChannelMixer ) 的另一种更新方法吗?我猜 AUGraphNodeInfo 也可能被弃用
    • 是的,您根本不会使用节点,直接使用 AudioUnits。在启动输出单元之前,您必须在每个单元上调用AudioUnitInitialize
    【解决方案2】:

    一个(非弃用)V3 AUAudioUnit 子类仍然可以返回一个支持音频渲染回调的 AUInternalRenderBlock。然后,AVAudioEngine API 可以连接这些音频单元(例如,连接到混音器节点)。 Audio Unit V3 渲染函数似乎仍然允许在 iOS 上进行短时间(少于 500 个样本的缓冲区)进行近实时音频合成和分析。

    在 GitHub 上查看我的 V3 AU 示例应用程序(混合 Swift 和 Objective C):https://github.com/hotpaw2/auv3test5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 2016-12-26
      • 2018-08-13
      • 1970-01-01
      • 2016-04-06
      • 2012-06-26
      • 1970-01-01
      • 2020-08-27
      相关资源
      最近更新 更多