Agora.io - 如何在使用视频聊天时消除回声

Posted

技术标签:

【中文标题】Agora.io - 如何在使用视频聊天时消除回声【英文标题】:Agora.io - How to remove echo sound when using video chat 【发布时间】:2020-07-30 14:40:02 【问题描述】:

我正在尝试实现基本视频通话的代码示例 一切都很顺利,只是当我与电话 A 通话时,声音转移到电话 B 并在句末附加了回声,任何人都知道如何消除回声。 它发生在我的 A10 和 A71 以及计算机上。 我的脚本:

public void JoinChannel(string channelName)

    //set callback
    Debug.Log("Join channel");
    screen1.SetActive(true);
    screen2.SetActive(true);
    joinButton.SetActive(false);
    inputField.SetActive(false);
    mRtcEngine.OnJoinChannelSuccess = OnJoinChannelSuccess;
    mRtcEngine.OnUserJoined = OnUserJoined;
    mRtcEngine.OnUserOffline = OnUserOffline;
    
    //enable video
    mRtcEngine.EnableVideo();

    //allow camera output callback
    mRtcEngine.EnableVideoObserver();

    //join the channel
    mRtcEngine.JoinChannel(channelName, null, 0);

private void OnUserJoined(uint uid, int elapsed)

    textDebug.GetComponent<Text>().text = "OnUserJoined";
    Debug.Log("OnUserJoined");
    GameObject go;
    go = screen1;
    go.name = uid.ToString();

    VideoSurface o = go.AddComponent<VideoSurface>();
    o.SetForUser(uid);
    o.SetEnable(true);
    Debug.Log(uid);

    mRemotePeer = uid;

【问题讨论】:

【参考方案1】:

Agora SDK 支持回声消除。在大多数情况下,这个问题可以通过使用耳机来解决,并确保耳机不会产生回声。

在多个用户加入的频道中,如果设备无法正常工作,则频道中的所有其他用户都可能会听到回声。因此,请注意,听到回声的用户不一定是有问题的用户。

自检步骤: 检查以下内容:

找到回声的来源。您可以将频道中的用户一一静音,以找到回声的来源。 检查回声是偶发的还是连续的。 CPU 过载可能会导致偶尔出现回声。通过 Agora Analytics 的 Call Search 功能,您可以在 End-to-End Details 页面查看 CPU 使用率。 确保所有用户都处于分开的物理环境中,并且彼此之间不要坐得太近。 检查 SDK 版本:

android/ios:v1.6.0+。 Windows/macOS:v1.7.0+。

检查您是否启用了外部音频源。如果是这样,回声消除默认关闭。 在 Windows 中,确保未选中监控麦克风选项。 在 iOS 上,检查应用是否将 Audio Session 设置为 AVAudioSessionCategoryOptionMixWithOthers。如果是这样,当其他应用程序同时使用音频设备时,您可能会遇到回声。 部分 Android 或 Windows 设备的系统默认支持回声消除功能,如果系统的回声消除较差,您可能会遇到回声。在这种情况下,Agora 建议在系统中禁用回声消除,并使用 Agora 的回声消除。

使用耳机: 在一对一通话中,如果您听到回声,请让其他用户使用耳机。 在多用户通话中,要求用户依次静音,以找出造成回声的原因。引起回声的用户应使用耳机或将自己静音。

如需更多帮助和最新常见问题解答,请参阅https://docs.agora.io/en/faq/echo

【讨论】:

好像两个设备在一个房间里会有回声,会测试更多看看

以上是关于Agora.io - 如何在使用视频聊天时消除回声的主要内容,如果未能解决你的问题,请参考以下文章

如何基于 ZEGO SDK 实现回声消除自动增益控制降噪功能

Agora.io - 如何使用 mediaPlayer 共享视频时间戳? - iOS

如何在 URL 中嵌入 App ID 和 Channel ID (Agora.io)

Agora.io 视频流切割纵向和横向视频

在 Agora.io 视频通话后 Unity VideoPlayer 音频中断

如何使用 agora.io Unity SDK 检索频道用户列表