1

我们实现的信令机制需要在 sdp 本身中发送 icecandidates。
你知道如何在 sdp 中嵌入 icecandidates 吗?
另外,如果 icecandidates 嵌入在 sdp 中,那么 PeerConnection 将如何启动 p-2-p 连接?
或者 PeerConnection 是否可以在设置远程 sdp 后启动 p2p 连接或必须做其他事情?

另外,您能否建议我们如何使用 webrtc 在同一 wifi 网络中的 2 个设备之间进行视频通信(不使用 STUN/TURN)?
我尝试将 iceservers 设置为 null,但应用程序无法正常工作!
我已经从日志中为这两个设备收集了生成的 sdp。
我有为两个同行生成的候选冰。我将 sdp 和 icecandidates 合并为一个 sdp。有了这个,我将 iceservers 设置为 RTCConfiguration 为 NULL。但是现在这个应用程序不工作了!

我想知道的是,如果我们有一个嵌入了 icecandidates 的 SDP,我们如何启动 p2p 连接?设置 Remote IceCandidate 或设置 RemoteDescription 时是否启动 p2p 连接?

谢谢!

4

2 回答 2

4

ICE 候选人包含在 SDP 报价/答案中。因此,只需等到 ICE 收集过程完成,然后发送 SDP 提议/答案。

我不确定你是否可以在没有 STUN/TURN 服务器的情况下使用 WebRTC,但你可以使用你的或公共的。似乎在本地环境中,没有 STUN/TURN 服务器一切正常 - 只需将一个空数组传递给iceServers.

对于最后一个问题 - 这取决于。如果实现了TrickleICE(在 Chrome 和 Firefox 中),则在找到第一个好的候选 ICE 时启动连接。您可以在此之前设置描述。否则,您需要等到ICE 收集过程完成,然后发送 offer/answer 并将其设置为其他对等方作为远程描述。然后将启动连接。

于 2016-02-12T10:24:22.643 回答
1

我无法将其放入评论中,因此我将其发布为答案。

我们经常在没有配置 STUN/TURN 服务器的情况下运行本地 WebRTC 测试,它运行良好。它只会限制您通过 NAT 防火墙连接的能力。不能保证它会在您的环境中连接,但它不应该崩溃。还没有在 Android 上尝试过,所以没有评论。

至于禁用 Trickle ICE,我们遇到了一些问题(主要是在 Chrome 上)。您基本上必须等到收到 NULL ICE 候选人后才能发送 OFFER 或 ANSWER。这就是 WebRTC 引擎告诉应用程序 ICE 收集过程已完成的方式。当我们配置为使用 google STUN/TURN 服务器时,在最后一个可行的候选事件发生和 NULL 候选事件发生之间存在很长的延迟(> 10 秒)。我还看到了从未收到 NULL 候选事件并且调用超时的情况。

我们的计划是添加一个计时器,以在 Trickle ICE 禁用几秒钟后中断 ICE 收集过程。我还没有尝试过,但我看不出为什么这不起作用并且应该更有用。根据我的经验,所有的候选人都是在一两秒内收集的。

于 2016-02-12T15:51:45.580 回答