【问题标题】:WebRTC video stream error - scaledroneWebRTC 视频流错误 - scaledrone
【发布时间】:2018-12-16 03:15:11
【问题描述】:

有谁知道过去一两个月 WebRTC 发生了什么变化? 我有一个 WebRTC 视频网络应用程序,大约两个月前运行良好,现在随机停止工作。我使用 scaledrone 进行选拔

这是我遵循的教程: https://www.scaledrone.com/blog/posts/webrtc-tutorial-simple-video-chat

我得到的唯一错误是这个并没有对我说什么:

DOMException: Failed to set local answer sdp: Called in wrong state: kStable

演示可以在这里看到: enter link description here

任何想法将不胜感激!

【问题讨论】:

  • 啊,他们的 GitHub 居然更新了。将尝试删除问题
  • groups.google.com/forum/… -- chrome 66 正在更严格地检查信号状态,这可能会破坏没有做正确事情的代码

标签: webrtc


【解决方案1】:

它是 RTCPeerConnection.signalingState。可能的值是:

  • stable - 初始状态。没有正在进行的 SDP 提议/答案交换
  • have-local-offer - 连接的本地端具有本地 申请了 SDP 报价
  • have-remote-offer - 连接的远程端有本地 申请了 SDP 报价
  • have-local-pranswer - 已应用远程 SDP 报价,并且 SDP pranswer 在本地应用
  • have-remote-pranswer - 已应用本地 SDP,并且 SDP pranswer 远程应用
  • 已关闭 - 连接已关闭

您可以在下面添加的图片中看到 WebRTC 协商过程。

DOMException: 无法设置本地答案 sdp: Called in wrong state: kStable 表示“您的浏览器”没有得到任何 SDP 提议/答案,如上图所示。这可能取决于浏览器与 scaledron WebRTC-Wrapper 实现的不兼容性,或者例如某些 STUN 问题,这些问题也涉及 Scaledron 实现。

据报道,第一次使用“新”频道 ID 时,它只能工作一次,之后就再也不能用于请求身份了。

我们假设在身份断言请求过程中存在一个用于已验证身份的“计数”(操作队列)(目标对等身份值) 非常不稳定 - 请参阅 - https://www.w3.org/TR/webrtc/#dom-rtcconfiguration-peeridentity

function startWebRTC(isOfferer) 
{
  pc = new RTCPeerConnection(configuration);
    var identity = pc.peerIdentity;
    ...
    ...
    if (identity) 
    {
          alert("Identity of the peer: idp='" 
                 + identity.idp + "'; assertion='" 
                 + identity.name + "'");
    }
    else 
    {
          alert("Identity of the peer has not been verified");
    }
    ...
    ...
}

“配置”在哪里:

const configuration = {
  iceServers: [{
    urls: 'stun:stun.l.google.com:19302'
  }]
};

https://www.w3.org/TR/webrtc/ 4.4.1.2 入队操作: "... 一个 RTCPeerConnection 对象有一个操作队列,[[Operations]],它确保队列中只有一个异步操作同时执行。如果在前一个调用的返回承诺仍未解决的情况下进行后续调用,它们被添加到队列中并在所有先前的调用都完成执行并且它们的承诺已经解决时执行......”......看接下来的步骤......

但是如果没有直接的分析工具来评估它是极其困难的。 WebRTC 的 scaledrone 包装器实现非常敏感

我们必须检查 RTCPeerConnection.iceConnectionState, RTCPeerConnection.peerIdentity, RTCPeerConnection.localDescription, RTCPeerConnection.remoteDescription, RTCPeerConnection.signalingState, ... 。

我用 Firefox-Quantum-65.0 x64 和 Chrome-71.0 对 nodejs websockets 做了一些比较测试,你可以在这里看到:

您会发现其中有很大的不同。 最好的 阿克塞尔

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多