You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用调用AcousticEchoCanceler.create()失败问题求助

问题:AAudio创建音频流后无法初始化AcousticEchoCanceler

我在Android应用中使用AAudio打开音频流,通过以下代码设置Session ID:

AudioStreamBuilder_setSessionId(builder, AAUDIO_SESSION_ID_ALLOCATE);

打开流后,通过AAudioStream_getSessionId(st->recorderStream)获取到类似35329的Session ID,但调用AcousticEchoCanceler.create(sessionId)时失败,报错信息如下:

AudioEffect E set(): AudioFlinger could not create effect
7b491460-8d4d-11e0-bd61-0002a5d5c51b /
ec7178ec-e5e1-4432-a3f4-4657e6795210, status: -19

AudioEffects-JNI E

AudioEffect initCheck failed -3

AudioEffect-JAVA E Error code -3 when initializing AudioEffect.

AcousticEchoCanceler W not enough memory

已确认ActivityManager.MemoryInfo()显示内存充足,且AcousticEchoCanceler.isAvailable()返回true,请问为何创建AcousticEchoCanceler会失败?


可能的原因及解决方案

  • AAudio流配置与AEC不兼容:AcousticEchoCanceler对音频参数有严格要求,比如采样率(通常需为44100Hz或48000Hz)、声道数(单声道优先)、音频格式。AAudio默认配置可能超出AEC支持范围,需强制设置匹配的参数,例如在构建AAudio流时指定采样率为48000Hz、单声道输入。

  • Session ID未关联双向流:AEC需要同时绑定录音流和播放流,且两者必须属于同一个音频Session。如果仅创建了录音流,未将对应播放流关联到同一Session,会导致AEC初始化失败。需确保播放、录音流共用同一个Session ID,或在构建AAudio流时明确配置双向流支持。

  • AAudio低延迟模式与硬件AEC冲突:部分设备的硬件AEC仅支持普通AudioTrack/AudioRecord流,不兼容AAudio的低延迟模式。错误码-19(NO_INIT)和-3(BAD_VALUE)往往指向这类兼容性问题。可尝试将AAudio流的性能模式从AAUDIO_PERFORMANCE_MODE_LOW_LATENCY改为AAUDIO_PERFORMANCE_MODE_POWER_SAVING,看是否能正常初始化AEC。

  • AudioFlinger实例资源耗尽:设备的AudioFlinger对音频效果实例数量有上限,若其他应用已占用所有AEC实例,会导致创建失败。可重启设备释放资源,或检查应用中是否重复创建未释放的音频效果实例。

内容的提问来源于stack exchange,提问作者Juha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:35:08