在同一网络中,视频通话效果很好。问题是在其他网络上调用计算机时,远程视频没有显示。在chrome上,我在控制台中没有任何错误,但是在firefox控制台上,我正在“ICE Failure”

我使用Node JS来实现信令服务器和Google STUN服务器。

以下是即时通讯使用的事件顺序:

用户A:

  • 创建对等连接(包括getusermedia,addstream)
  • 在ICEtcandidate 处理程序
  • 上注册
  • 发出一个套接字事件,以通知用户B 有关该调用,并等待响应
  • 用户B 接收报价并创建答案

  • 用户B:
  • 接收套接字事件并创建对等连接(包括getusermedia,addstream)
  • 注册 onicecandidate 处理程序
  • 还注册“Onnegogiationneeded” 处理程序。 用户没有此处理程序。删除它,以便用户B有足够的时间来创建对等连接候选处理程序,然后创建报价
  • 触发协商时,将创建报价并将其发送给用户A

  • 注意:
    1.在创建要约之前,在双方创建对等连接 onicecandidate 处理程序。
    2.这样做是为了确保在创建要约之前,两边都准备好 Onicecandiate 处理程序,并且不丢失 ICE候选人

    上述事件顺序有什么问题吗?

    最佳答案

    我们可以按照以下顺序调试和解决问题:

  • 检查sdp和正在交换的候选者。
  • 如果通过交换我意味着srflx或prflx的任何STUn候选对象,我们需要进行协商,我们需要检查它们是否稍后用于交换媒体。如果未正确配置STUN服务器,请正确。
    3.如果仍在交换STUN候选者,则您将面临此问题,这意味着不同网络中的一个候选者位于对称防火墙之后。在这种情况下,需要配置TURN服务器。您可以使用任何免费的TURN服务器,部署我们自己的TS或使用某些付费服务。请确保您已按照防火墙配置TURN服务器。大多数情况下,TURN服务器不是免费提供的。

  • 4.如果仍然面临问题,这意味着防火墙存在问题,则防火墙中未打开所需的STUN,TURN服务器端口或协商端口。在这种情况下,请在开放网络中测试您的设置。如果可行,则必须打开这些端口/IP并相应地配置防火墙。

    PS:您可能不会在chrome控制台中找到任何日志,但是在chrome://webrtc-internals中,您会发现非常丰富的信息,这些信息对于您调试和解决问题很有用。

    09-11 17:37
    查看更多