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 - 视频导致互联网上的通话中断 的相关文章

随机推荐

  • 生成最小可执行文件的编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 非常简单的mysql查询不使用索引

    我的 mySQL 表的排序不使用索引 我不知道为什么 我有 CREATE TABLE IF NOT EXISTS test a int 11 NOT NULL b int 11 NOT NULL KEY kk a ENGINE MyISAM
  • C中获取字符串的指针算术

    我想获取字符数组的元素 但根本没有成功 问题是我只获取第一个和最后一个元素 仅此而已 我的代码是 void getcharacters char cad int l int i l strlen cad for i cad 0 i lt c
  • 使用 boost::asio::use_future 增强 asio:async_read()

    打电话时asio async read 使用 future 有没有办法获取当 a 时传输的字节数boost asio error eof出现异常 似乎在很多情况下 即使对等方断开连接 人们也希望传输数据 例如 namespace ba bo
  • 具有自定义背景图像的 Google 地图

    我希望找到一种方法来创建带有自定义背景图像的谷歌地图实例 我看过一些示例 下面链接 但没有找到任何有关如何执行此操作的文档 我希望有人能帮助我解决这个问题 Thanks 简单的例子 http www obsidianportal com c
  • 恢复/重置默认 Xcode 字体配色方案?

    所以我尝试单击 T 却不小心单击了 XCode 字体首选项中的 颜色 框 我已经处于 默认 状态 现在我正在尝试恢复它 我发现这是不可能的 我被其他程序中存在的 重置默认值 按钮宠坏了 除了重装还有什么办法吗 是的 我偏爱白色背景 随着时间
  • 什么时候适合使用C作为面向对象语言?

    关于如何使用 C 来模拟面向对象的概念 有很多优秀的答案 仅举几例 C 具有抽象数据类型的双链表 https stackoverflow com questions 3274472 c double linked list with abs
  • 设置animationDidStopSelector:在UIView的动画委托上

    我认为在过去一年半的 iPhone 开发经验中我一直在做这个错误 我需要一些知识渊博的澄清 您可能知道也可能不知道 使用 UIView 属性可以很容易地设置动画beginAnimations forContext 方法 并用一个包装它com
  • 如何使用正则表达式来匹配不包含多个特定单词之一的字符串?

    如何使用正则表达式来避免匹配包含多个特定单词之一的字符串 例如 字符串不应包含以下单词test nor sample sample test 我的正则表达式在某些情况下会失败 1 this is a test case 2 this is
  • 使用定义的模式生成多个动态 ID 的函数

    我正在尝试创建一个函数来生成具有定义模式的多个动态 ID 我该怎么做 跟进 Vue js 如何使用定义的模式生成多个动态 ID https stackoverflow com q 49776146 8770366 Details 我正在创建
  • 如何将 Chromium 嵌入式框架 (CEF) 与 java 集成

    我想制作一个桌面应用程序来浏览网站 我不想制作浏览器 而是制作浏览器嵌入应用程序 我尝试过JavaFx但我发现了一些问题 例如缺少对插件的支持 例如 flash pdf 查看器等 经过大量搜索后 我发现了 Chromium Embedded
  • XML:如何将一个 xml 文件的内容加载到另一个文件中

    我只是希望能够从另一个 xml 文件动态写入 xml 文件的内容 A XML包含
  • Angular 6 中 ng2-file-upload 的进度条

    我想为我的文件上传创建一个进度条 我使用的上传是 https www npmjs com package ng2 file upload https www npmjs com package ng2 file upload 应用程序组件
  • 导航抽屉项目未注册点击事件

    我正在努力让导航抽屉项目注册并启动并意图进行新活动 抽屉打开正常并正确显示 但当我单击列表中的项目时没有任何反应 这是我的代码 取自谷歌教程 mTitle mDrawerTitle getTitle mTitles getResources
  • 快速将大型 2d 矩阵融合为 3 列 data.table

    我有一个大矩阵num 1 62410 1 48010 我想要一个长格式的 data table e g Var1 Var2 value 1 1 1 4227 786 2 2 1 4211 908 3 3 1 4197 034 4 4 1 4
  • Javascript 按空格分隔,但不按引号分隔

    目标是在空格处分割字符串 但不分割引号中的文本数据或将其与相邻文本分开 输入实际上是一个包含值对列表的字符串 如果 value 值包含空格 则将其括在引号中 我需要一个返回值对元素数组的函数 如下例所示 输入示例 a 0 b 1 moo f
  • 使用 UCLIBC 交叉编译 PHP

    这是一个转发 之前的帖子已关闭 移至 SERVERFAULT 并再次关闭 我认为这篇文章是一个有效的堆栈溢出问题 因为我认为它是由一些 automake 编译 链接错误引起的 这是一个编程问题而不是服务器管理问题 我会检查 uClibc 的
  • Monogame:WAV 无法播放

    这是 MonoGame 3 4 我通过 VS2013 使用它 我正在使用 mgcb 编译我的 WAV 文件 就像我的纹理一样 MGCB 工作正常 但是当涉及到使用SoundEffect类 它不播放任何内容 没有例外并且SoundEffect
  • CKEDITOR,在文本编辑器 onLoad 上自动聚焦

    有人知道如何在页面加载时自动聚焦于 CKEDITOR 文本区域吗 目前 用户必须先单击文本区域才能开始输入 像 Google 一样 我希望加载页面 并且用户可以立即开始输入 而无需单击文本区域 这是启动 CKEDITOR 的当前代码
  • webRTC - 视频导致互联网上的通话中断

    更新1 我尝试像这样改变视频约束 var mediaConstraints audio true We want an audio track video width min 160 ideal 320 max 640 height min