在iOS中使用两个音频单元同时进行IO是否安全?

在iOS中使用两个音频单元同时进行IO是否安全?,第1张

概述我正在为iOS开发一个VOIP项目,并注意到一个奇怪的问题.我的设置如下所示: > Capture端有一个VoiceProcessingIO单元(用于回声消除),具有输出范围,输出总线和输入范围,启用输入总线. >渲染结束有一个RemoteIO单元,输出范围,输出总线启用. 到目前为止我没有使用任何音频图表. 当我开始录制语音时,我注意到上面的设置导致输出语音非常低,直到我关闭VoiceProce 我正在为iOS开发一个VOIP项目,并注意到一个奇怪的问题.我的设置如下所示:

> Capture端有一个VoiceProcessingIO单元(用于回声消除),具有输出范围,输出总线和输入范围,启用输入总线.
>渲染结束有一个RemoteIO单元,输出范围,输出总线启用.

到目前为止我没有使用任何音频图表.

当我开始录制语音时,我注意到上面的设置导致输出语音非常低,直到我关闭VoiceProcessingIO的输出范围,输出总线.虽然这听起来像是我的代码中的一个错误(设置错误的IO总线),但是为什么捕获结束的更改会影响渲染结束仍然没有意义.

从developer.apple.com阅读iOS音频单元托管指南后,我注意到它多次提到每个设计模式应该只包含一个I / O音频单元.我想知道这是强制性的,还是只是可选的.保持我的代码有两个音频单元是否安全?

实际上,使用两个音频单元可能有其自身的原因,因为如果我想静音一端,我可以简单地关闭一个单元.我不能用kAudioUnitProperty_EnableIO来做,因为它在AudioUnitinitialize()之后无法更改,这意味着单音频单元解决方案可能必须关闭两个通道并再次重新初始化音频单元,如果我想禁用其中一个.这会导致糟糕的用户体验,因为此时语音可能暂停一会儿.

谢谢,
福州

解决方法 好吧,看起来我在问一个角落问题.无论如何,我想我到目前为止基于我的实验有一些想法:

>我使用两个RemoteIO单元……它在本地端可能看起来很好但会在远程端引起问题.还记得我提到过我正在开发VOIP应用吗?我发现当使用渲染端使用扬声器时,我的捕获端只能将非常低的音量传递到远端.
>如果我使用两个VoiceProcessingIO单元……虽然看起来我们可以创建两个音频单元对象,但它们实际上是同一个.我的意思是,在我的代码中,如果我创建两个单元并关闭其中一个(例如,静音麦克风),那么另一个也停止工作.
>如果我使用一个VoiceProcessingIO单元和一个RemoteIO单元……那就更复杂了.首先,不要仅使用VoiceProcessingIO单元作为渲染结束.它不会触发回声消除.所以唯一的选择是使用VoiceProcessingIO单元作为捕获,使用RemoteIO作为渲染.它可能有用但要小心.如果您碰巧启用了VoiceProcessingIO单元的输入和输出端,您可能会听到自己扬声器或扬声器的音量输出更低.

顺便说一句,所有讨论仅适用于iOS.我没有机会和Mac一起玩.

所以是的,如果我们真的这样做,看起来没有保证的行为,最后的希望 – 是遵循Apple的Audio Unit Hosting GuIDe.

我仍然期待更多的人在这里投入你的意见.如果您发现任何新消息,请告诉我.

总结

以上是内存溢出为你收集整理的在iOS中使用两个音频单元同时进行I / O是否安全?全部内容,希望文章能够帮你解决在iOS中使用两个音频单元同时进行I / O是否安全?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/999434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存