问题标签 [rtcpeerconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在同一浏览器选项卡中连接两个 RTCPeerConnections 时,WebRTC 连接偶尔会失败
我正在使用 WebRTC 来促进多人浏览器游戏的点对点连接。选择一个对等点作为其他客户端对等点将连接的主机。主机对等体同时运行客户端和服务器逻辑。所有客户端(包括主机客户端)都通过 WebRTC 连接到主机的服务器。
有时我会看到此主机客户端 -> 主机服务器 WebRTC 连接建立失败,原因不明。主机客户端和服务器逻辑在同一个选项卡/Javascript VM 中运行,因此它可能有助于将此设置可视化为页面内的某种环回连接。
失败的连接建立流程如下:
在此流程结束时(大约需要 5 秒),客户端和主机 RTCPeerConnections 都处于以下状态(并且永远不会从这里转换):
在此流程中交换的 Offer、Answer 和 ICE 候选人如下所示:
客户报价
主持人答疑
客户 ICE 候选人
{"candidate":"candidate:585712035 1 udp 2113937151 0322602a-bcc1-41b4-96e3-963022b99529.local 55860 typ host generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
{"candidate":"candidate:1593308690 1 udp 2113939711 c34a088f-0835-4e78-aa33-7b4206079a3c.local 55861 typ host generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
{"candidate":"candidate:842163049 1 udp 1677729535 5.64.56.196 55860 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag 67dh network-cost 999","sdpMid":"0","sdpMLineIndex":0}
null
接待 ICE 候选人
{"candidate":"candidate:585712035 1 udp 2113937151 0322602a-bcc1-41b4-96e3-963022b99529.local 54514 typ host generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
{"candidate":"candidate:1593308690 1 udp 2113939711 c34a088f-0835-4e78-aa33-7b4206079a3c.local 54515 typ host generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
{"candidate":"candidate:842163049 1 udp 1677729535 5.64.56.196 54514 typ srflx raddr 0.0.0.0 rport 0 generation 0 ufrag 4eiM network-cost 999","sdpMid":"0","sdpMLineIndex":0}
null
浏览器
Chrome 版本 79.0.3945.130。
javascript - Javascript WebRTC 无法设置远程应答 sdp:在错误状态下调用:kHaveRemoteOffer 并在错误状态下调用:kStable
我无法让我的 WebRTC 代码正常工作。我相信我所做的一切都是正确的,但它仍然无法正常工作。奇怪的是为什么 ontrack 这么早就被调用了,也许它应该是这样的。
该网站使用javascript代码,我没有发布的服务器代码,但这就是WebSockets连接的地方只是一个交换器,您发送到服务器的内容会将相同的信息发送回您连接的其他合作伙伴(陌生人)。
服务器代码看起来像这个小示例
这是我的输出。
原始文本:https
://pastebin.com/raw/FL8g29gG JSON 彩色:https ://pastebin.com/FL8g29gG
我的javascript代码如下
javascript - rtcpeerconnection 跟踪事件有时返回空流
建立第一次成功的 RTC 连接的最佳方法是什么?
以下代码有时有效,有时无效。我认为addIceCandidate
在 before 或 after 被调用是一个问题createAnswer
,我不知道哪个更可取,或者这是否是问题(为什么它不能一直工作,只需将其粘贴到浏览器中,然后尝试几次,您应该看到至少有时“呼叫”按钮并非一直有效):
请注意,有时视频流是如何稍后进来的并且是空的。
javascript - WebRTC 对等连接错误:无法设置远程应答 sdp:在错误状态下调用:kStable
我遇到了一段 javascript 代码的问题,该代码应该使用 Viagenie 服务器和 Firebase 将用户连接到 webRTC 视频通话。当其中一位用户按下呼叫按钮时,他们收到以下错误:未捕获(承诺)DOMException:无法在“RTCPeerConnection”上执行“setRemoteDescription”:无法设置远程应答 sdp:在错误状态下调用:kStable。代码如下:(我的信息、通行证和凭据字段被替换为我的实际信息、电子邮件和凭据)
c++ - CreateModularPeerConnectionFactory 期间的 WebRTC 崩溃
我正在尝试在 OSX Catalina 上使用 WebRTC 对等连接创建一个基本的聊天应用程序,我执行以下操作:
这signaling_thread
是一个std::unique_ptr<rtc::Thread> signaling_thread
但是当我执行 std::move 时,我得到了以下崩溃:
有没有人遇到过类似的问题?
javascript - 确定 Webrtc 失败的原因
我正在使用 webRTC 在两台计算机之间共享视频。我遇到的问题是有时它不起作用,但通常它确实起作用。我认为我公司的防火墙正在中断连接,但我无法知道为什么视频没有显示。我总是成功地发送 SDP 和 Ice 候选人,但是什么也没发生。永远不会收到音频/视频轨道。我可以访问两种浏览器的代码,所以如果有什么我可以添加代码告诉我为什么没有收到连接,那就太好了。如果你愿意,我会向你们展示我的代码,但我更希望知道哪些地方需要 console.log() 才能知道SDP candidates are bad
一些事情。我将 Twilio 用于 stun 和 Turn 服务器。
android - 验证 org.WebRTC VideoFrame 或 NV21Buffer 是否包含有效(未损坏)图片
我调用以下方法将帧从 USB 摄像机流式传输到org.WebRTC
的 Video Capture Observer。它工作正常,除了在远程对等方的视频显示中每隔几秒钟出现一些损坏的帧(绿色或扭曲的灰色帧)。我想在将它们进一步发送给观察者之前验证它们是否是好图片nv21Buffer
。videoFrame
在进一步发送帧之前,是否有任何内置工具/方法来验证帧的好坏?
webrtc - 如何让 WebRTC 连接到对等点?
我有点困惑。在这个 MDN 页面上,它说以下(重点是我的)https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/icecandidate_event
当调用 RTCPeerConnection.setLocalDescription() 将 RTCIceCandidate 添加到目标时,会向 RTCPeerConnection 发送一个 icecandidate 事件。此事件处理程序应将候选传输到远程对等方,以便远程对等方可以将其添加到远程候选集。
我能找到的唯一一个使用 STUN 服务器的例子是 webrtc/samples 涓流冰https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/。我的 STUN 服务器似乎可以工作。
它将列出我的 tcp 和 udp 端口。但是,当我将 IceTransports 值设置为中继时,我总是得到一个空列表
如果我希望三个用户访问我的页面并使用 RTCDataChannel 相互交谈,他们如何检测并相互连接?
webrtc - 是否可以在同一个窗口中创建两个相互连接的 RTCPeerConnections?
如果是这样,我是否需要进行正常的候选人创建和协商,还是有更简单的方法来做到这一点?
javascript - 没有冰候选人/无法连接同行 Webrtc
我尝试从Webrtc.org peerconnection guide实现 webrtc 代码。虽然没有生成有效的候选冰。我还注意到在 sdp 中总是使用 localhost ip (127.0.0.1),即使我在不同的设备上运行应用程序也是如此。在 Firefox 中,我确实收到了一个 icecandidate 事件。虽然 event.candidate == null。
有什么我做错了吗?
这是代码: