问题是只有两台计算机在同一个局域网环境中才能看到远程视频,即来自不同的ip,未看到远程视频,在js控制台中我收到错误ICE failed, see about:webrtc for more details
。
我正在尝试搜索解决方案并发现问题可能是因为“在收到应答之前接收到ICE候选人应该设置RemoteDescription”,但我不知道如何纠正它。
在其他部分webrtc脚本中,RTCMultiConnection例如没有这个问题。
任何解决方案?
EasyRTC - http://easyrtc.com/download/
运行EasyRTC- http://wdd.co.il:8280
更新:我的onIceCandidate
pc.onicecandidate = function(event) {
if (newPeerConn.cancelled) {
return;
}
var candidateData;
if (event.candidate && peerConns[otherUser]) {
candidateData = {
type: 'candidate',
label: event.candidate.sdpMLineIndex,
id: event.candidate.sdpMid,
candidate: event.candidate.candidate
};
if( iceCandidateFilter ) {
candidateData = iceCandidateFilter(candidateData, false);
if( !candidateData ) {
return;
}
}
//
// some candidates include ip addresses of turn servers. we'll want those
// later so we can see if our actual connection uses a turn server.
// The keyword "relay" in the candidate identifies it as referencing a
// turn server. The \d symbol in the regular expression matches a number.
//
if (event.candidate.candidate.indexOf("typ relay") > 0) {
var ipAddress = event.candidate.candidate.match(/(udp|tcp) \d+ (\d+\.\d+\.\d+\.\d+)/i)[2];
self._turnServers[ipAddress] = true;
}
if (peerConns[otherUser].connectionAccepted) {
sendSignalling(otherUser, "candidate", candidateData, null, function() {
failureCB(self.errCodes.PEER_GONE, "Candidate disappeared");
});
}
else {
peerConns[otherUser].candidatesToSend.push(candidateData);
}
}
};
答案 0 :(得分:0)
如果两个客户端可以在同一子网上相互访问,但不能跨子网访问,那么问题总是提供的STUN服务器列表不适用于您,或者您需要TURN服务器因为你的客户背后是令人讨厌的企业防火墙或阻止纯P2P的对称NAT。通常你需要一个TURN服务器。你可以通过demo.easyrtc.com上的演示来看看这个。它们由TURN服务器支持。如果您从他们的站点运行RTCMultiConnection演示(而不是将其下载到您自己的),它也可能由TURN服务器支持。
如果您查看easyrtc google群组,则每周左右会弹出一次此问题。
我写了EasyRTC的客户端并回答了easyrtc google组(https://groups.google.com/forum/#!forum/easyrtc)上发布的大部分问题。