首页 > 解决方案 > WebRTC:IceCandidates 不收集在 Chrome/Edge 中

问题描述

我正在使用 WebRTC 开发一个会议应用程序,但我遇到了一个非常奇怪的问题。更确切地说,正如标题所说,onicecandidate 并没有收集所有需要的候选人,或者更确切地说,只收集了空的候选人,然后收集状态变为完成。这仅适用于远程对等方,具体取决于我在 Chrome 或 Edge (Chromium) 中使用的 PC,在一台 PC 上运行良好但在 Chrome 上运行良好但在 Edge 上运行良好,另一台运行在 Edge 上运行良好但在 Chrome 上运行。

创建报价的对等方的 icecandidates 被正确收集,它们被发送并且远程对等方正在设置它们,只有远程对等方从不收集任何内容,除了空的。

我将 rtcpeerconnection 配置为使用来自 google 的 stun 服务器(我现在在 localhost 上运行),但没有任何改变。我是否必须采取任何特殊步骤才能使两种浏览器中的一切正常运行?

编辑:我注意到这个问题是因为 ontrack 函数发送给远程对等点的轨道没有播放,远程对等点中的 video.play() 承诺只会永远处于待处理状态,既不会继续下去也不会崩溃。我注意到它工作的浏览器和不工作的浏览器之间的区别是缺少远程发送的 ICE 候选者,在所有发送视频的地方也远程播放。

标签: webrtc

解决方案


您是否碰巧在创建答案之前设置了远程描述?

如您所知,交换 sdp 是“协商”。

因此,当远程对等体创建自己的应答 sdp 时,远程对等体必须设置其他对等体的 sdp。

像这样:

1) Peer A - 创建报价 (offer sdp)

2) Peer A - 设置本地描述 (offer sdp)

3) Peer B - 设置远程描述 (offer sdp)

4) 对等 B - 创建答案 (answer sdp)

5) Peer B - 设置本地描述 (answer sdp)

6) Peer A - 设置远程描述 (answer sdp)


推荐阅读