- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了几天时间寻找连接问题,但没有运气。我正在尝试使用 Kurento 实现一个相对简单的 one2one 调用。
下面是Kurento的调试日志,其中包括可以建立连接和连接失败的情况。
如果您需要更多日志(例如客户端、信令服务器、tcpdump 或 Kurento 的跟踪日志,请告诉我,我会提供!)
非常感谢任何帮助或新的意见!
问题描述:
大约30%的情况下,无法建立WebRTC连接。不幸的是,当可以建立连接时,我缺乏任何类型的模式,而当不能建立连接时,它看起来完全是随机的。我在同一个网络中,使用相同的设备,使用相同的 TURN 服务器,使用相同的信令协议(protocol),但在 30% 的情况下无法建立连接。
当我在本地运行该应用程序时,它似乎工作得更可靠,几乎 100% 的时间都可以建立连接(或者甚至可能是 100% 的时间,我已经测试了很多次,以至于我失去了踪迹)。我使用 docker 在本地设置基础设施,并在不同的网络中运行不同的容器(TURN、Kurento、Signalling)以模拟生产部署。
我们在开发和生产环境中经历了相同的行为。在我们的开发环境中,我们绝对没有防火墙,因此这似乎不是问题。
我尝试查找问题原因的方法:
大多数情况下,我一直在比较有效案例和无效案例的日志,但我未能发现它们之间有任何显着差异,可以指出问题所在。
我已经通过 TURN 服务器(使用 Firefox 和 force_relay 标志)和直接通过 Kurento 测试了 WebRTC 连接,但在这两种情况下,大约 30% 的情况下连接失败。
我已尝试过滤所有非 Relay 候选者的 ICE 候选者。
我嗅探了我们的信令服务器(也控制 Kurento)和 Kurento 之间的流量,以查看交换的 JSON RPS 消息中的任何差异,但它们看起来本质上是相同的。
我已经使用此工具测试了我们的 STUN 和 TURN 服务器:https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/我得到了看起来正确的服务器反射和中继候选者
我嗅探了成功和不成功连接的客户端的流量,但可以发现显着差异
我简化了 Kurento 媒体管道(无记录,无集线器),但行为是相同的
我使用了不同的浏览器(Chrome、Firefox 和 native iOS 实现),但行为是相同的
可以建立连接的情况的Kurento调试日志:
https://gist.github.com/omnibrain/2bc7ad54f626d278d3c8bac29767ac4c
无法建立连接的Kurento调试日志:
https://gist.github.com/omnibrain/f7caee04a5c6d77ea22a9ccfa95dd825
最佳答案
经过几天的调试和几乎疯狂的我们终于找到了问题的原因:
我们使用了 Socket.IO 的 Swift 客户端和 Socket.IO 的 Java Netty Socket.IO 服务器实现。客户端 (iOS) 使用长轮询与服务器 (Java) 进行通信。事实证明,Netty Socket.IO 服务器正在对 Swift Socket.IO 客户端的长轮询负载进行 URL 解码,但 Swift Socket.IO 客户端实际上并未对其进行 URL 编码。这意味着从 Swift Socket.IO 客户端发送的每个“+”都会在服务器上被替换为“”(空格)。为什么这是个问题?因为客户端的SDP报价包含ufrag,其中可以包含加号!因此,如果 SDP 包含“+”,则会在服务器上将其替换为空格,从而导致 STUN ping 失败,因为无法验证消息完整性。
关于webrtc - Kurento WebRTC 连接在约 30% 的情况下失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54291498/
安装 kurento-media-server-6.0 时,它自动创建了一个额外的帐户“kurento”,密码仍然未知。虽然它没有 sudo 访问权限,但不需要的用户帐户仍然是一个安全问题。删除用户帐
我已经在本地机器上安装了最新稳定版本的Kurento Media Server(KMS),规范为Ubuntu 16.04 Xenial,遵循this documentation .我已经验证了所有内容
谁能解释一下我们在 kurento.conf.json 文件中的各种参数。 尝试创建对象时引发异常的资源使用限制"exceptionLimit": "0.8" 但是我看到这个参数在配置文件中被注释了,
我正在尝试为数千个并发调用扩展 kurento 媒体服务器。 我打算使用 OpenVidu Pro 进行缩放。 我还保留了另一种方法来开发自己的应用服务器和管理 kms 节点。 我担心的是与 kms
我想向 webrtc 对等体发送 2 个媒体流。我正在使用 kurento 媒体服务器和 kurento 客户端 API。 Kurento 客户端 API 允许我在创建 webRTC 对等连接之前设置
使用 kurento 教程 java 示例。我想处理 webrtcpeer 对象上的流事件,例如 onend 等。以下是我想要获取流对象的示例代码。 var options = {
我想将 Kurento 主要用作 WebRTC 到 RTP 网关和一些过滤器。在浏览器中,我使用浏览器的 native WebRTC API。 我想在我的 Node 应用服务器中创建一个 WebRTC
我在 kurento 的 java 文档中读到了这两个 webrtcendpoint和 rtpendpoint .但它们都表明它们以非常相似的方式发挥作用。两者都可以作为要约方和受约方来交换媒体。 我
我正在学习 one2many 调用教程、one2many 调用高级教程和 hello-world 录音,但我的录音似乎无法正常工作。它创建了文件,但它始终是 382 字节,没有可播放的内容。没有抛出任
我正在尝试在 Ubutu Trusty (14.04) 中安装最新稳定版本的 Kurento (V 6.0)。不幸的是,我收到了陌生人的消息: 输出: The following packages h
我想创建多个广播 session ,(比如聊天室,所以每个广播可以有 n 个主播给不同的观众组)。 是否可以进行多个广播 session ?如果是这样,我怎么能做到这一点?我可以做一些类似于 gith
我在使用 kurento-java-tutorial one-2-one-call-recording 示例和我运行的任何其他项目时遇到问题,当我注册用户并尝试调用另一个注册用户时,它要求摄像头和麦克
我使用Kurento Media Server 6.0作为MCU来进行一对多通信。我正在尝试重新协商媒体流切换的 SDP。为此,我使用以下代码: 设 webRtcEndPoint 为某个 MediaP
我有最新版本的 Kurento 媒体服务器 v6.4.0,当我尝试与 kurento 建立连接时,它返回错误 { [Error: Error adding candidate] code: 40401
我有 2 个 WebRtcEndpoint(调用方和被调用方)。这些端点相互连接以共享其流。这个沟通没有问题。每个对等点都会获取另一个对等点的流,而不会丢失任何帧。 我想并排录制这两个流。我的搜索结果
这个问题与this有关(基本上,MPEG 有效,但想尝试实现更好的解决方案) 我一直在试用 kurento 的 magic mirror 要求:输出流必须模糊输入流的所有区域,除了人脸。 我的实现计划
我正在尝试 kureno 的教程 http://doc-kurento.readthedocs.org/en/stable/tutorials/java/tutorial-1-helloworld.h
我从 github 获得了 kurento 示例视频应用程序。这对点对点通话很有用。我试着在 kurento 中进行群组视频通话。我无法获得正确的代码。我需要正确的代码来进行群组视频通话。 最佳答案
我做了什么: 我正在使用 Kurento Media Server 在服务器中存储视频流帧。我可以使用 opencv-plugin 示例将帧存储在服务器中。 我在以下两种情况下存储视频帧。 1) I
我对 kurento 媒体服务有疑问。有时它会因下一个警告和错误而中断(不幸的是 kurento 日志没有时间戳): 第一期:我有很多下一个警告: (kurento-media-server:1773
我是一名优秀的程序员,十分优秀!