如何在iOS平台的PJSIP 2.8中启用WebRTC AEC?
解决PJSIP 2.8中WebRTC AEC无法启动的问题
问题回顾
你已经完成了以下配置操作,但WebRTC AEC仍未正常启动:
- 开启编译支持:在
config_site.h中添加#define PJMEDIA_HAS_WEBRTC_AEC 1 - 设置媒体配置参数:
app_config.media_cfg.ec_options = PJMEDIA_ECHO_WEBRTC.rawValue app_config.media_cfg.ec_tail_len = 30 - 执行PJSIP初始化:
status = pjsua_init(&(app_config.cfg), &(app_config.log_cfg), &(app_config.media_cfg))
核心现象是:WebRTC AEC功能未生效,日志中缺失预期的WebRTC AEC mobile successfully created with options初始化日志。
解决方案
问题根源在于PJSIP的回声消除策略优先级:默认情况下,PJSIP会优先尝试使用设备端(硬件)的回声消除功能,而非内置的WebRTC软件AEC。你需要添加PJMEDIA_ECHO_USE_SW_ECHO标志,强制启用软件回声消除。
调整后的ec_options配置如下:
app_config.media_cfg.ec_options = PJMEDIA_ECHO_WEBRTC.rawValue | PJMEDIA_ECHO_USE_SW_ECHO.rawValue
保持ec_tail_len = 30和其他初始化步骤不变,重新运行后就能看到预期的WebRTC AEC初始化日志,功能也会正常启动。
内容的提问来源于stack exchange,提问作者we_lokin
相关产品推荐
相关产品推荐

