webRTC - 视频导致互联网上的通话中断

2024-02-09

更新1:我尝试像这样改变视频约束

var mediaConstraints = {
  audio: true,            // We want an audio track
  video: {
    width: { min: 160, ideal: 320, max: 640 },
    height: { min: 120, ideal: 240, max: 480 },
  }
};

它稍微改善了通话。视频仍然挂起,有时会导致通话中断。我认为这意味着问题是网络速度慢而不是 NAT。

我仍在寻找答案以改善速度较慢的呼叫连接。

原帖:

我知道关于 SO 的类似问题很少,但就我的搜索而言,我想问的问题还没有被问到。

webRTC 视频通话在我的本地网络中运行良好。但当我尝试通过互联网给我的朋友打电话时,情况很糟糕。我和我的朋友使用同一个 ISP,并且我们居住在相距几英里的同一地理区域。所以我认为这个问题不是由某些 NAT 或防火墙引起的,但也许我错了。最初,我们的呼叫连接音频通过,视频仅通过几个位,然后在呼叫挂断之前冻结或挂起。如果我们禁用视频,通话会持续更长时间并且通常不会掉线。这是否是网络缓慢的问题,因为我们都在该地区,互联网速度约为 150Kbps?那么 Whatsapp 视频通话是如何进行的呢?

我打算在具有多个 ISP 和相同低速的同一区域内使用此应用程序。但如果问题不是由于速度引起的,而是由于 NAT 等原因引起的,我需要 TURN 服务器,那么我认为 100% 的呼叫将通过 TURN,这对我来说将非常昂贵。

如果您有任何此类经验或认为我可以在如此低的互联网速度下改进此呼叫设置,我需要建议。

如果这对这里有任何帮助,我的约束配置是:

var mediaConstraints = {
  audio: true,            // We want an audio track
  video: {
    width: { min: 240, ideal: 720, max: 1080 },
    height: { min: 240, ideal: 720, max: 1080 },
  }
};

谢谢


我将答案发布在这里,以防有人遇到这个问题。

原因是每当 ICE 状态更改为时我就会关闭连接disconnected。有时由于网络缓慢或其他一些问题,ICE 可能会将状态更改为disconnect暂时地。通常情况下,它会在一两秒内自行恢复。正确处理这种状态的方法是确定何时disconnected是永久的,也有临时的。在问题的回答中here https://stackoverflow.com/questions/63582725/webrtc-differentiate-between-temporary-disconnect-or-failure-and-permanant我计算了两秒内收到的字节数。如果字节增加我认为disconnect否则永久,然后关闭连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webRTC - 视频导致互联网上的通话中断 的相关文章