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

时间:2020-07-30 14:40:02

标签: unity3d agora.io videochat

我正在尝试实现基本视频通话的代码示例 一切运行顺利,只是当我与电话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 个答案:

答案 0 :(得分:0)

Agora SDK支持回声消除。在大多数情况下,可以使用耳机解决此问题,并确保耳机不会引起回声。

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

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

找到回声的来源。您可以使通道中的用户一个一个静音,以找到回声的来源。 检查回声是偶然的还是连续的。 CPU过载可能会引起偶尔的回声。通过使用Agora Analytics的呼叫搜索功能,您可以在“端到端详细信息”页面上检查CPU使用率。 确保所有用户都位于单独的物理环境中,并且彼此之间不要坐在得太近。 检查SDK版本:

  • Android / iOS:v1.6.0 +。
  • Windows / macOS:v1.7.0 +。

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

使用耳机: 在一对一通话中,如果听到回声,请其他用户使用耳机。 在多用户呼叫中,请用户依次静音以找出引起回声的人。引起回声的用户应使用耳机或使自己静音。

有关进一步的帮助和最新的常见问题解答,请参见https://docs.agora.io/en/faq/echo