【问题标题】:WebRTC, ice candidates connectionWebRTC,冰候选连接
【发布时间】:2017-01-09 14:16:55
【问题描述】:

我正在尝试学习如何在应用程序中使用webRTC,因此我编写了以下链接中的代码示例:http://wklej.org/hash/fd599a32e8e/

一开始我需要说的是我并不关心浏览器的兼容性,我只需要支持 Chromium Web 引擎而无需任何外部适配器/其他库。

Web 应用程序应该允许我在同一主机上运行的两个浏览器选项卡之间建立连接 — 通过手动交换适当的数据(SDPICE 候选者)。

要遵循的步骤:

  1. 点击“创建报价按钮”,复制本地SDP;
  2. 转到其他选项卡,将先前复制的 SDP 插入“远程 SDP”区域,然后按“创建答案”;
  3. 复制生成的本地 SDP,转到第一个选项卡,插入“远程 SDP”区域并单击“设置远程 sdp”按钮(不是创建应答按钮);
  4. 交换 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


【解决方案1】:

试试我的(cut'n'paste):https://jsfiddle.net/7vv2vxtt/

或自动(localStorage):https://jsfiddle.net/2v1Lnpmx/

This code intentionally left blank.

随着时间的推移,ICE 候选人会被添加到本地提议/答案中,因此它只是等待候选人结束,然后再生成嵌入所有候选人的 SDP。

应该适用于所有浏览器。

【讨论】:

  • 您是否可以指出任何文档,其中解释了对 ICE 候选者、SDP 等进行排序的最佳实践?
  • @Sam 你的意思是浏览器实现?浏览器负责 ICE 候选的生成,一旦setLocalDescription 成功(步骤 3.2.6.here)就开始。网页应通过在各自的候选人之前发送报价和答案来实现信号通道,如果您最晚从setLocalDescription 的成功回调和候选人从.onicecandidate 发送报价/答案,这自然会发生.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多