Javascript 让WebRTC工作(如何调试ICE失败?)
我不知道如何调试WebRTC。我不断收到“ICE失败”的错误,但我怀疑这是问题所在。这是我的密码: 我使用node.js/express/socket.io设置房间和连接对等点,然后使用一些默认的公共服务器发送信号 奇怪的是,客户端上似乎有远程流 下面是我遇到的两个错误(顺便说一句,目前我只是尝试将我的手机连接到笔记本电脑或两个浏览器选项卡,都在局域网内): 不支持“text/html”的HTTP“Content Type”。媒体资源负载http://192.168.1.2:3000/%5Bobject%20MediaStream%5D 失败。Javascript 让WebRTC工作(如何调试ICE失败?),javascript,html,webrtc,Javascript,Html,Webrtc,我不知道如何调试WebRTC。我不断收到“ICE失败”的错误,但我怀疑这是问题所在。这是我的密码: 我使用node.js/express/socket.io设置房间和连接对等点,然后使用一些默认的公共服务器发送信号 奇怪的是,客户端上似乎有远程流 下面是我遇到的两个错误(顺便说一句,目前我只是尝试将我的手机连接到笔记本电脑或两个浏览器选项卡,都在局域网内): 不支持“text/html”的HTTP“Content Type”。媒体资源负载http://192.168.1.2:3000/%5Bob
ICE失败,有关更多详细信息,请参阅关于:webrtc
任何帮助都会震撼 我已经发表了一些评论,但我认为写一个答案也是值得的 在我第一次快速阅读您的代码之后,我看到了三件大事。除了肤浅的阅读之外,我还没有尝试实际运行或调试您的代码 首先,您应该以与本地视频流相同的方式设置
remoteVideo.src
URL参数:
pc.onaddstream = function(media) { // This function runs when the remote stream is added.
console.log(media);
remoteVideo.src = window.URL.createObjectURL(media.stream);
}
其次,应该将约束对象传递给rtpeerconnection
的createOffer()
和createAnswer()
方法。约束应该/可能如下所示:
var constraints = {
mandatory: {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
}
};
在成功和错误回调参数之后传递:
pc.createOffer(..., ..., constraints);
以及:
最后,你不能在同龄人之间交换ICE候选人。ICE候选人可以是报价/答复SDP的一部分,但并不总是如此。要确保发送所有这些文件,应在rtpeerconnection
上实现onicecandidate
处理程序:
pc.onicecandidate = function (event) {
if (event.candidate) {
socket.emit("ice candidate", event.candidate);
}
}
您必须在server.js中实现客户端之间的“ice候选”消息中继
希望这有帮助,祝你好运 那么,在firefox的“about:webrtc”中启动调试模式并没有得到任何帮助?你的连接日志怎么说?嗯。。。大量错误:所有检查完成成功=0失败=2,未指定眩晕服务器,未指定回合服务器,重复优先级1686110207候选,您没有在第104行正确设置remoteVideo.src URL。您应该像对本地流一样使用window.URL.createObjectURL()。快速编辑。。。。说吧!等等……我看不出您正在向createOffer()或createAnswer()调用传递任何启用音频/视频的约束。谢谢你的帮助!现在我们来看一下,我想在这里发表一些评论
无效候选项传递给addIceCandidate()
我将推进我的更改并继续处理此问题。约束应为containts={'OfferReceiveAudio':(模式!='sendonly'),'offerToReceiveVideo':(模式!=='sendonly')}
pc.onicecandidate = function (event) {
if (event.candidate) {
socket.emit("ice candidate", event.candidate);
}
}