iOS 音频单元 - 与图形连接?

标签 ios audio core-audio audiounit augraph

我已经跳出了深渊,并决定使用音频单元来解决 iOS 上的低延迟音频问题。我已经阅读了尽可能多的文档(来自 Apple 和大量论坛),总体概念很有意义,但我仍然对一些需要帮助的概念摸不着头脑:

  1. 我在某处看到 AU 图表已被弃用,我应该直接连接音频单元。我对此很满意...但是怎么办?我是否只需要使用音频单元的连接属性将其连接到源 AU,然后就可以了?初始化并启动单元,然后观看奇迹发生? (因为它不适合我...)

  2. 如果我只想从麦克风抓取音频,对音频数据进行一些处理,然后存储该音频数据而不发送,那么最好使用什么音频单元设置到 RemoteIO 扬声器,总线 0 输出?我尝试连接 GenericOutput AudioUnit 来捕获回调中的数据,但没有任何运气......

就是这样。我可以根据要求提供代码,但为时已晚,这让我彻底崩溃了。如果知道简单的答案,那就太好了。我将随意发送任何代码片段。可以这么说,我可以轻松获得一个简单的 RemoteIO、麦克风输入、扬声器输出设置,效果很好。延迟似乎不存在(至少在我看来)。我只想对麦克风数据做一些事情并将其存储在内存中,而不会将其发送到扬声器。最终连接均衡器和混音器会很时髦,但一次一步一步。

FWIW,我正在 Xamarin Forms/C# 环境中进行编码,但 Objective C、Swift 或其他语言中的代码示例都可以。我被困在概念上,不一定是确切的代码。

谢谢!

最佳答案

在没有图表的情况下使用音频单元非常简单且非常灵活。要连接两个单元,您可以这样调用 AudioUnitSetProperty :

AudioUnitConnection connection;
connection.sourceAudioUnit = sourceUnit;
connection.sourceOutputNumber = sourceOutputIndex;
connection.destInputNumber = destinationInputIndex;
 
AudioUnitSetProperty(
    destinationUnit,
    kAudioUnitProperty_MakeConnection,
    kAudioUnitScope_Input,
    destinationInputIndex,
    &connection,
    sizeof(connection)
);

请注意,以这种方式连接的单元需要统一设置其流格式,并且必须在初始化之前完成。

关于iOS 音频单元 - 与图形连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63213753/

相关文章:

math - DSP方法来检测可能不是当前声音中最主要的特定频率

ios - 激活元素时如何获取indexpath.row?

ios - ios应用程序崩溃:无法及时恢复

ios - Realm prepareForSeque 和 IBAction 的问题

javascript - 音频文件未在 tampermonkey 上使用用户脚本播放

ios - `inputProcRefCon` 中的 `AURenderCallbackStruct` 是什么?

iphone - 录音时减少/过滤背景白噪声

ios - SwiftUI 无法为图像过渡设置动画

iphone - iPhone-录制仅由应用播放的音频

ios - CFBundleDocumentTypes 不适用于 iOS 应用程序中的非公共(public) UTI