MozRTCPeerConnection()上FireFox中的NS_ERROR_UNEXPECTED

时间:2015-06-01 19:14:48

标签: firefox webrtc

我在我的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。

3 个答案:

答案 0 :(得分:3)

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

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

经过一段时间后我发现someUsername@虽然适用于Chrome,却不接受FF。

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

答案 1 :(得分:0)

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

更正是:

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

答案 2 :(得分:0)

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

另请注意,the latest version of adapter.js中不再需要createIceServer - 且不可用。在那里仍然有一个polyfill用于语法上的一些更改,但它现在透明地处理,而不需要使用这个特殊的函数。