DOMException:处理ICE候选

时间:2016-07-05 08:35:00

标签: webrtc

当我尝试添加冰候选者时,我收到此错误DOMException: Error processing ICE candidate。这是候选人:

  

候选人:1278028030 1 udp 2122260223 10.0.18.123 62694 typ host   第0代ufrag eGOGlVCnFLZYKTsc network-id 1

此外,它并不总是发生 - 其他时间一切顺利。我无法重现一致的模式,它会抛出此错误。任何想法如何解决这个/调试它将不胜感激!

7 个答案:

答案 0 :(得分:23)

这个问题几乎完全没有记录,更糟糕的是,Google似乎只是在实施w3 webRTC标准。他们也偏离了这个标准。

但是,由于很可能会在Chrome上发生这种情况(我没有检查过Firefox,而且Safari没有实现[ERROR:rtc_peer_connection_handler.cc(1439)] Error processing ICE candidate. [ERROR:webrtcsession.cc(1134)] ProcessIceMessage: ICE candidates can't be added without any remote session description. ),因此从控制台启动Chrome获得的此错误消息可能会有所帮助:

if(!peerConnection || !peerConnection.remoteDescription.type){
    //push candidate onto queue...
}

那么,根据最新的Chrome版本,您无法设置ICE候选人而无需设置远程描述,因为2017年除了Facebook Messenger之外没有webRTC进度,这看起来对于可预见的未来。

所以记得打电话

<!DOCTYPE html>
<html>
   <body>

     <p id="demo">Click the button to change the text in this paragraph.</p>
     <img id="img" src="#">

     <button onclick="myFunction()">Try it</button>

     <script>
     function myFunction() {
        document.getElementById("demo").innerHTML = "Hello World";
        var i = true;
        if(i) {
           document.getElementById("img").src = "https://www.w3schools.com/css/trolltunga.jpg";

        } else {
           document.getElementById("img").src = "http://wallpaper-         gallery.net/images/image/image-13.jpg";}
       }
    </script>

  </body>
 </html>

并且在设置远程描述之后,迭代队列以添加对等连接处于正确状态的候选者!

答案 1 :(得分:2)

如果您要保留多个RTCPeerConnection对象,则必须确保将ICE候选人和说明添加到正确的对象中。

答案 2 :(得分:2)

这可能已经过时,但我有同样的错误,

在Chrome上我获得了DOMException: Error processing ICE candidate

在Firefox上,出现了一个错误,只是说明了DOMException

附加消息是:"Invalid candidate (both sdpMid and sdpMLineIndex are null).",情况确实如此,我真的没有从信号服务器得到的关于候选冰的响应中使用它们。

当我收到信号时使用这两个值会停止再次发生此错误。

希望这有助于其他人。

答案 3 :(得分:1)

如果我做出第二轮的报价答案,那就有效了。我不知道为什么这是必要的。

答案 4 :(得分:1)

您是否在调用setRemoteDescription之前添加候选者? Firefox 36遇到了一个问题,它在远程描述之前发送了候选者,但很久以来就已经解决了这个问题。

答案 5 :(得分:1)

如果您尝试连接到自己的对等(本地)ID,也会发生此错误。

答案 6 :(得分:0)

如果有人仍在寻找答案,我的问题是我的 UI 在设置 addIceCandidate 之前尝试 localDescription(记住 peerConnection.createAnswer())。我的来电者正在发送背靠背的 ICE 候选人,但所有候选人都在接收方失败并显示错误:DOMException: Error processing ICE candidate。这个简单的 if 为我解决了这个问题:

// on receive-candidate
...
if (peerConnection.localDescription) {
    peerConnection.addIceCandidate(new RTCIceCandidate(candidate))
        .catch(error => console.log(error));
}