【发布时间】:2017-01-09 14:16:55
【问题描述】:
我正在尝试学习如何在应用程序中使用webRTC,因此我编写了以下链接中的代码示例:http://wklej.org/hash/fd599a32e8e/
一开始我需要说的是我并不关心浏览器的兼容性,我只需要支持 Chromium Web 引擎而无需任何外部适配器/其他库。
Web 应用程序应该允许我在同一主机上运行的两个浏览器选项卡之间建立连接 — 通过手动交换适当的数据(SDP 和 ICE 候选者)。
要遵循的步骤:
- 点击“创建报价按钮”,复制本地SDP;
- 转到其他选项卡,将先前复制的 SDP 插入“远程 SDP”区域,然后按“创建答案”;
- 复制生成的本地 SDP,转到第一个选项卡,插入“远程 SDP”区域并单击“设置远程 sdp”按钮(不是创建应答按钮);
- 交换 ice 候选者 — 从一个选项卡复制它们,插入到第二个选项卡,然后按“添加候选者”按钮。以其他方式执行相同操作。
主要问题是这个函数:
peer.iceconnectionstatechange = function(event) {
console.log("ice connection state: " + peer.iceConnectionState)
}
不会被触发。我尝试使用STUN/TURN 服务器但没有成功。远程视频不会运行。如果有人能指出我哪里出错了?
【问题讨论】:
-
create answer按钮没有按照您的步骤执行任何操作? -
是的,
create answer按钮采用从第一个选项卡复制的提供者 sdp。它尝试将其设置为远程描述符,然后在第一个选项卡中创建一个必须用作远程 sdp 的答案(步骤 2 和 3) -
您使用的 TURN 服务器可能来自一些声称您可以使用这些凭据的教程,对吧?这些凭据不起作用,因为没有人会让您免费访问他们的 TURN 服务器。试试凭证here,你会发现你没有得到任何 type=relay 的候选人
标签: webrtc