【问题标题】:NS_ERROR_UNEXPECTED in FireFox on mozRTCPeerConnection()在 mozRTCPeerConnection() 上的 FireFox 中的 NS_ERROR_UNEXPECTED
【发布时间】:2017-11-06 06:50:47
【问题描述】:

我在我的 webrtc 1-1 视频通话应用程序中使用了 adapter.js。它在谷歌浏览器上运行良好,双方都可以看到对方的视频并且可以听到音频。但是,当我在 FireFox 上运行相同的应用程序时,我在控制台上收到来自 adapter.js 的以下错误。

NS_ERROR_UNEXPECTED

这是来自 adapter.js 的函数,它在 return 语句中给出上述错误:

var RTCPeerConnection = function(pcConfig, pcConstraints) {
  // .urls is not supported in FF yet.
  maybeFixConfiguration(pcConfig);
  return new mozRTCPeerConnection(pcConfig, pcConstraints);
};

这是 pcConfig 里面的内容:

{"iceServers":[{"url":"stun:stun.l.google.com:19302"}]}

这是 pcConstraints 内部的内容:

{"optional":[{"DtlsSrtpKeyAgreement":true},{"RtpDataChannels":true}],"mandatory":{}}

这是函数maybeFixConfiguration(pcConfig) 的样子:

function maybeFixConfiguration(pcConfig) {
  if (pcConfig == null) {
    return;
  }
  for (var i = 0; i < pcConfig.iceServers.length; i++) {
    if (pcConfig.iceServers[i].hasOwnProperty('urls')){
      pcConfig.iceServers[i]['url'] = pcConfig.iceServers[i]['urls'];
      delete pcConfig.iceServers[i]['urls'];
    }
  }
}

我不明白我在这里犯了什么错误。 pcConfig 和 pcConstraints 结构有问题。我使用的是今天下载的最新版 FireFox。

【问题讨论】:

  • 嗨,我很想知道你是如何得到这个错误的。我在 Firefox 38.0.1 上。而且我无法使用您提到的输入来重现它。您是否介意发布一个工作代码-sn-p 以及您使用的版本,或者更好的是 file a bug 与该信息?谢谢!

标签: firefox webrtc


【解决方案1】:

这可能已经过时,但可能会有所帮助。 创建new RTCPeerConnection(config) 时,我有相同的NS_ERROR_UNEXPECTED

我的问题是我的 iceServers 数组有一个无效的 urls 部分,这给 Firefox 带来了问题,特别是我有 urls: 'turn:someUsername@ipAddress:port'

一段时间后我发现someUsername@ 不被 FF 接受,尽管它可以在 Chrome 上运行。

删除字符串的username@ 部分为我解决了这个问题,希望对我有所帮助。

【讨论】:

    【解决方案2】:

    我发现了错误,是我们如何指定iceServers。

    更正的是:

    {'iceServers': [
      createIceServer(isChrome
        ? 'stun:stun.l.google.com:19302'
        : 'stun:23.21.150.121', null, null)
    ]}
    

    【讨论】:

      【解决方案3】:

      更新您的浏览器。 iceServer URL have been supported since Firefox 22 (circa March 2013)adapter.js 中的完全限定域名通常不涵盖那么旧的浏览器。

      另外,请注意 createIceServer 不再需要 - 并且不可用 - 在 the latest version of adapter.js 中。那里仍然有一个 polyfill 用于语法上的一些变化,但现在它被透明地处理了,不需要使用这个特殊的功能。

      【讨论】:

        猜你喜欢
        • 2015-10-01
        • 2014-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 1970-01-01
        相关资源
        最近更新 更多