ios - iOS 音频单元 - 与图表连接?
问题描述
我已经跳入深渊,并决定使用音频单元在 iOS 上找出低延迟音频。我已经阅读了尽可能多的文档(来自 Apple 和大量论坛),总体概念很有意义,但我仍然对一些需要帮助的概念摸不着头脑:
我在某处看到不推荐使用 AU 图表,我应该直接连接音频单元。我对此很满意...但是如何?我是否只需要使用音频单元的 Connection 属性将其连接到源 AU,然后就可以走了?初始化并启动单元,然后观看奇迹发生吗?(因为它不适合我......)
如果我只是想从我的麦克风中获取音频,对音频数据进行一些处理,然后存储该音频数据而不将其发送到 RemoteIO 扬声器、总线 0 输出,那么最好的音频单元设置是什么?我尝试连接一个 GenericOutput AudioUnit 来捕获回调中的数据,但没有任何运气......
就是这样。我可以在请求时提供代码,但为时已晚,这已经把我消灭了。如果有简单的答案,那很酷。我会随意发送任何代码片段。可以这么说,我可以轻松获得一个简单的 RemoteIO、麦克风输入、扬声器输出设置,效果很好。延迟似乎不存在(至少在我看来)。我只想对麦克风数据做一些事情并将其存储在内存中,而不会将其发送到扬声器。最终连接 eq 和混音器会很时髦,但一步一步。
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)
);
请注意,以这种方式连接的单元需要统一设置其流格式,并且必须在初始化之前完成。
推荐阅读
- python - Atlassian API 在 API 中附加文件时抛出错误
- docker - 如何将已安装的文件夹删除到 docker 容器
- excel - 获取 Excel 中给定标题名称列的最后一个值
- css - 带有表单输入的引导表不会缩小
- kubernetes - 运行 skaffold 需要一个或多个有效的 Kubernetes 清单
- reactjs - 为什么我的 axios 删除函数会出现 CORS 错误?
- google-text-to-speech - 使用 VTT 作为 Google Text to Speech 的文本源生成音频?
- r - 库中的错误(tidyr):没有名为“tidyr”的包
- r - 每次参考列的值发生变化时,添加新列,其中的值循环通过向量
- javascript - How can I Intercept a function in Node.js with Proxy and apply?