Webrtc 生成ICE候选对象
我正在使用WebRTC API在chrome浏览器上运行的两台PC之间进行视频调用。我的观察是,只有当我连接到internet时,才会生成ICE候选项,否则不会生成ICE候选项。为什么会这样 连接块Webrtc 生成ICE候选对象,webrtc,Webrtc,我正在使用WebRTC API在chrome浏览器上运行的两台PC之间进行视频调用。我的观察是,只有当我连接到internet时,才会生成ICE候选项,否则不会生成ICE候选项。为什么会这样 连接块 var pc_config = {"iceServers":[]}; pc = new webkitRTCPeerConnection(pc_config); pc.onicecandidate=function (evt) { if(evt.candid
var pc_config = {"iceServers":[]};
pc = new webkitRTCPeerConnection(pc_config);
pc.onicecandidate=function (evt) {
if(evt.candidate){
console.log("Sending candidate to other peer"+evt);
jWebSocketClient.broadcastText("",evt);
}
};
谢谢,
Sureshkumar Menon如果我没有弄错的话,ICE候选者是通过联系
STUN
服务器创建的,因此您需要互联网连接。这样做是为了将私人地址转换为公共地址,使您的客户端能够连接(并被连接)到其他客户端。据我所知,有四种类型的ICE候选地址:
但是,我不能完全确定您是否理解您的用例。。两台计算机在同一个本地网络上吗?如果您的接口已启动,则至少应该获得主机候选。我只使用C++ API,但我不明白为什么它会与JavaScript的不同行为。< P> >是的,在PC共享SDP之前,你必须连接到Internet。这是因为ICE服务器不在本地计算机上,而是在internet上。ICE服务器通过以下线路连接到WEB RTC中:
if(浏览器=='firefox'){
PeerConnConfig={
ICEServer:[{
url:“stun:23.21.150.121”//FF尚不支持在ICEServer中解析DNS
}
]
};
媒体约束={
强制性:{
OfferToReceiveAudio:正确,
OfferToReceiveVideo:没错,
MozDontOfferDataChannel:true//告诉FF不要将数据通道信息放入SDP,否则chrome将崩溃
}
};
//FF还没有揭露这一点
MediaStream.prototype.getVideoTracks=函数(){
返回[];
};
MediaStream.prototype.getAudioTracks=函数(){
返回[];
};
}否则{
PeerConnConfig={
ICEServer:[{
网址:“stun:stun.l.google.com:19302”
}
]
};
媒体约束={
强制性:{
OfferToReceiveAudio:正确,
OfferToReceiveVideo:正确
},
可选:[{
DtlsSrtpKeyAgreement:true
}
]
};
//适用于chrome旧版本的API compat
if(!MediaStream.prototype.getVideoTracks){
MediaStream.prototype.getVideoTracks=函数(){
返回此项。视频跟踪;
};
MediaStream.prototype.getAudioTracks=函数(){
归还此音频曲目;
};
}
if(!PeerConnection.prototype.getLocalStreams){
PeerConnection.prototype.getLocalStreams=函数(){
返回this.localStreams;
};
PeerConnection.prototype.getRemoteStreams=函数(){
返回此文件。remoteStreams;
};
}
}
我从WEBRTC_SHIM中剪切了上面的代码。特别是将ICE服务器定义为:URL:“STUN:STUN .L.GooGel.com:19302”。chrome://webrtc-internals/