使用AudioQueue的OSX中的AEC(回声消除支持)



我正在OSX和iOS上开发VOIP应用程序,并将使用AudioQueue进行音频流,想知道的是,默认情况下,AudioQueue是否支持声学回声消除,或者我们是否需要添加对它的支持,
如果我们需要实现,我相信必须实现一些像Speex这样的开源库。是否有可用的示例显示AudioQueue与Speex或任何其他库的集成

据我所知,您必须使用音频单元来访问系统的回声消除。您可以使用kAudioUnitSubType_VoiceProcessingIO而不是kAudioUnitSubType_RemoteIO

为了控制延迟,您可能无论如何都要使用"音频单元"。

您可以使用渲染回调函数从音频队列中获取数据,并将其传递给I/O单元。对于传出,请使用AudioUnitRender

感谢David和这篇文章,我意识到iOS上的回声取消需要以下更改:

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO

根据苹果公司的文档,这将启用硬件回声抑制。然而,您仍然需要为AudioStream描述使用特定的标志:

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;

相关内容

  • 没有找到相关文章

最新更新