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

基于agora-rtc-react的Next.js应用音频回声问题排查求助

回声问题排查与解决方案

代码中存在的直接风险点

你的代码里有一个引发回声的关键问题:在<LocalUser>组件中传入了本地麦克风轨道作为audioTrack属性。

<LocalUser
  micOn={micOn}
  id="local-user"
  allowFullScreen
  cameraOn={camOn}
  className="tele-view__call-view__video"
  videoTrack={camTrack?.localCameraTrack}
  audioTrack={micTrack?.localMicrophoneTrack} // 此处是核心问题
  cover="/images/users/user-dummy-img-dark.webp"
/>

本地麦克风轨道的作用是采集你的声音并发送给远端用户,完全不需要在本地播放。如果本地播放自己的麦克风轨道,扬声器输出的声音会被麦克风重新采集,直接形成循环回声——这是Web音视频应用中回声的最常见诱因。

修复与优化步骤

1. 移除本地音频播放配置

删除<LocalUser>组件中的audioTrack参数,本地只渲染视频轨道即可:

<LocalUser
  micOn={micOn}
  id="local-user"
  allowFullScreen
  cameraOn={camOn}
  className="tele-view__call-view__video"
  videoTrack={camTrack?.localCameraTrack}
  cover="/images/users/user-dummy-img-dark.webp"
/>

2. 强化回声抑制配置

虽然你已开启AEC,但可以设置更激进的模式提升抑制效果:

const micTrack = useLocalMicrophoneTrack(micOn, {
  AEC: true,
  ANS: true,
  AECMode: 'aggressive' // 开启强回声抑制模式
});

3. 全局客户端音频配置校验

确保创建Agora客户端时,开启完整的音频处理选项:

const client = useRTCClient({
  mode: 'rtc',
  codec: 'vp8',
  audioProcessingOptions: {
    echoCancellation: true,
    noiseSuppression: true,
    autoGainControl: true
  }
});

4. 硬件与环境排查

  • 使用耳机替代扬声器,从物理层面切断麦克风对播放声音的采集
  • 确保麦克风与扬声器距离足够远,减少物理回声
  • 检查浏览器音频设备权限,确认没有异常的音频路由情况

验证方式

修复后可通过以下步骤确认效果:

  • 进入通话后说话,观察是否还存在回声
  • 打开浏览器开发者工具的Media面板,确认本地未播放麦克风轨道

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:46:04