AUGraph 弃用是不是意味着不再有音频渲染回调?
Posted
技术标签:
【中文标题】AUGraph 弃用是不是意味着不再有音频渲染回调?【英文标题】:Does AUGraph deprecation means no more audio render callbacks?AUGraph 弃用是否意味着不再有音频渲染回调? 【发布时间】:2019-06-26 18:04:55 【问题描述】:我有一个带有详细渲染回调的应用程序,我怀疑它是否可以使用 AVAudioEngine。
无论如何要使用我的 AUGraph 渲染回调(带有多个总线)和 AVAudioEngine 吗?
任何示例代码?
【问题讨论】:
【参考方案1】:Audio Unit API 没有被弃用,只有可能构建在它之上的 AUGraph。
使用AudioUnitSetProperty 和kAudioUnitProperty_MakeConnection
和AudioUnitConnection 结构建立连接。
使用AudioOutputUnitStart 和AudioOutputUnitStop 启动和停止输出单元。
使用AudioUnitSetProperty 和kAudioUnitProperty_SetRenderCallback
和AURenderCallbackStruct 设置渲染回调
除了一点簿记和更简单的连接语法之外,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
【讨论】:
以上是关于AUGraph 弃用是不是意味着不再有音频渲染回调?的主要内容,如果未能解决你的问题,请参考以下文章
AUGraph 在 iOS 上被弃用了吗?如果是这样,啥时候?
AUGraph 播放 aac->pcm 转换的音频流在 iPhone7plus 上听起来断断续续,但不是 iPhone6