在发送答案之前收到ICE候选人时的错误

Epi*_*dex 8 google-chrome webrtc

我正在Chrome 23上建立WebRTC连接.要附加本地流,您需要允许浏览器使用摄像头和麦克风.在呼叫者方面,我正在检查是否可以获得本地流,直到这一刻我才发送报价.然后发送报价,浏览器立即开始发送ICE候选人.

那么,如果没有得到当地媒体流远程浏览器还没有我得到SYNTAX_ERR: DOM Exception 12peerConnection.addIceCandidate(candidate)对收到的每个ICE候选人.

我检查了文档,addIceCandidate但没有关于先决条件的信息.

我想我可以通过延迟发送ICE候选人并等待远程客户端添加本地流的信号来延迟发送ICE候选者,但这是需要额外的通信并且看起来不正确.

我可以以某种方式添加远程ICE候选者,webkitRTCPeerConnection然后才能发送应答并连接本地媒体流吗?

Epi*_*dex 10

在我写完这个问题之后,我想到了一个答案......在收到ICE候选人之前不需要附加本地流,但是remoteDescription应该设置(这应该在收到报价时进行).在我的代码中,我等待设置remoteDescription并发送答案,直到浏览器获得本地流.

  • @GuillaumeCisco据我记得,我只设置1秒的间隔并等待,但这是错误的!如果你和我有同样的问题,那么在你甚至可以访问相机之前设置`remoteDescription`.这样浏览器将处理ICE候选并建立连接.然后,当视频流可用时,浏览器(或您的代码 - 我现在不记得)将向对等方发送新的本地描述,视频将通过.但是两年多以前,从那以后很多事情都发生了变化(希望更好). (2认同)