gpt4 book ai didi

javascript - 让WebRTC工作(如何调试ICE失败?)

转载 作者:行者123 更新时间:2023-12-02 16:37:21 26 4
gpt4 key购买 nike

我不知道如何调试 WebRTC。我不断收到“ICE 失败”错误,但我怀疑这就是问题所在。这是我的代码:https://github.com/wamoyo/webrtc-cafe/tree/master/2.1%20Establishing%20a%20Connection%20%28within%20a%20Local%20Area%20Network%29

我使用node.js/express/socket.io来设置房间和连接对等点,然后使用一些默认的公共(public)服务器来发送信号。

奇怪的是,我在客户端上似乎有remoteStream。

这是我遇到的两个错误(顺便说一句,目前,我只是尝试从手机连接到笔记本电脑或两个浏览器选项卡,所有这些都在 LAN 内):

不支持“text/html”的 HTTP“内容类型”。加载媒体资源 http://192.168.1.2:3000/%5Bobject%20MediaStream%5D 失败。

ICE 失败,请参阅 about:webrtc 了解更多详细信息

任何帮助都会很棒!

最佳答案

我已经发表了一些评论,但我认为写一个答案也是值得的。

在我第一次快速阅读你的代码后,我看到了 3 个重要的事情。除了肤浅的阅读之外,我还没有尝试实际运行或调试您的代码。

首先,您应该按照与本地视频流相同的方式设置 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);
}

其次,您应该将约束对象传递给 RTCPeerConnectioncreateOffer()createAnswer() 方法。约束应该/可以如下所示:

var constraints = {
mandatory: {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
}
};

您可以在成功和错误回调参数之后传递此参数:

pc.createOffer(..., ..., constraints);

和:

pc.createAnswer(..., ..., constraints);

最后,您不会在同行之间交换 ICE 候选人。 ICE 候选人可以成为录用/应答 SDP 的一部分,但并非总是如此。为了确保发送所有这些,您应该在 RTCPeerConnection 上实现 onicecandidate 处理程序:

pc.onicecandidate = function (event) {
if (event.candidate) {
socket.emit("ice candidate", event.candidate);
}
}

您必须在 server.js 中的客户端之间实现“ice Candidate”消息中继

希望这有帮助,祝你好运!

关于javascript - 让WebRTC工作(如何调试ICE失败?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com