【发布时间】:2012-05-22 12:47:22
【问题描述】:
我正在为 iOS 开发一个 VOIP 项目,并注意到一个奇怪的问题。我的设置如下所示:
- 采集端有一个 VoiceProcessingIO 单元(用于回声消除),同时具有输出范围、输出总线和输入范围、输入总线启用。
- 渲染端有一个 RemoteIO 单元,具有输出范围,输出总线已启用。
到目前为止,我没有使用任何音频图表。
当我开始录制语音时,我注意到上面的设置导致输出语音非常低,直到我关闭输出范围,VoiceProcessingIO 的输出总线。虽然这听起来像是我的代码中的一个错误(设置了错误的 IO 总线),但捕获端的更改为什么会影响渲染端仍然没有意义。
在阅读 developer.apple.com 的 iOS 音频单元托管指南后,我注意到它多次提到每个设计模式应该只包含一个 I/O 音频单元。我想知道这是强制性的,还是可选的。用两个音频单元保存我的代码是否安全?
确实,使用两个音频单元可能有其自身的原因,因为如果我想将一端静音,我可以简单地关闭一个单元。我不能用 kAudioUnitProperty_EnableIO 来做到这一点,因为它在 AudioUnitInitialize() 之后无法更改,这意味着如果我想禁用其中一个,单音频单元解决方案可能必须关闭两个通道并再次重新初始化音频单元。这会导致糟糕的用户体验,因为此时语音可能会暂停一小会儿。
谢谢, 福州
【问题讨论】:
-
这可能是一个无用的组合,因为语音处理可能会进行零回声消除,除非同时用于输入和输出。
-
你能找到答案吗?
-
谢谢哥们。虽然我自己仍然没有答案,但我在我的实验中发布了一个半答案。让我们看看是否可以从其他专家那里找到更多意见。
-
你有回声消除的例子吗?我已经阅读了苹果文档,只能找到具有这种能力的语音处理IO的参考,但没有参考如何或示例
-
我也在尝试使用 vpio 和 remoteio,但可以选择。当我从 vpio 切换到 remoteio 时,remoteio 的录制音量会下降。我实际上也想知道 vpio 是否是变相的 remoteio。 IE。如果我绕过vpio上的语音处理,那是否等于remoteio?谢谢。
标签: ios core-audio