【发布时间】:2019-11-27 14:52:42
【问题描述】:
我有一个非常简单的 HTML 页面,带有一个简单的 webrtc 实现和一个 socket.io 服务器。我有两个视频元素,一个是本地的,一个是远程的。用户 ID 在页面加载时随机生成。当页面加载时,它会以随机 ID 加入特定的 socket.io 房间。我还有一个呼叫按钮,可以呼叫其他用户。
当我点击调用时,我创建了一个报价,我设置了本地流,我设置了本地描述,然后将该 SDP 发送到服务器。第二个用户拿起它,将其远程描述设置为接收到的描述。然后它创建一个答案,将其本地描述设置为新描述,并设置其本地流。然后它将应答 sdp 发送到服务器。发起者获取 sdp 并设置其远程描述。
上述过程或多或少应该如何工作?为了简单起见,我忽略了眩晕和转向。
问题是,我有启动器的本地流加载,以及来宾的两个流(远程和本地!),但是远程视频没有加载到启动器的页面上。所以步骤 1、2 和 3 有效,但 4 无效。
我觉得我在这里遗漏了一些非常明显的东西......由于客人能够看到本地和远程视频,我不认为这是我的眩晕/转向设置,但也许?
有什么建议吗?这里有什么问题吗?
【问题讨论】:
-
这可能是由于没有 STUN 造成的。您可以尝试在本地网络中运行所有内容以排除它。或者代码中可能缺少某些东西。忘记收听远程媒体流等。不看很难说。
-
@AntonRusak 我确实添加了 STUN 服务器,但没有添加 TURN 服务器。我没有设置一个。但是,如果客人可以看到我的远程视频,这是否意味着不需要中继(TURN)?尽管通过隧道(ngrok),但我在同一个网络上运行它。
-
我注意到在我调用 setRemoteDescription 后,
pc.ontrack为来宾运行,但是当发起者调用 setRemoteDescription 时,pc.ontrack不再被调用...