4

我正在玩 WebRTC,我想要实现的是:

User1 在 192.168.xx 打开浏览器

User2打开浏览器在192.168.xx的同一页面

用户 1 单击呼叫,用户 2 在他的屏幕上显示流。

我已经使用 node 和 socket.io 创建了一个信令服务器,并且我能够使用 socket.io 房间在用户之间交换消息。

我正在遵循的步骤是:

  • 获取用户媒体
  • 创建 peerconnection1 - 没有冰服务器
  • 在 peerconnection 上添加流
  • 创建报价
  • 通过套接字发送报价
  • 接收报价并创建 peerconnection2 - 没有 ice 服务器
  • 发送答案

我还在“oniceccandidate”和“onaddstream”中添加了一些日志,以查看它们何时被调用,并在“onaddstream”上创建了视频元素。

当我按下通话按钮时,我在另一台计算机上看到视频元素变黑,但我没有看到任何视频和音频。当然我错过了一些重要的步骤,

有人可以告诉我要进行正确的呼叫并交换所有必要的数据以在另一端显示流所需的步骤吗?

非常感谢

4

2 回答 2

5
A STUN server is used to get an external network address.
TURN servers are used to relay traffic if direct (peer to peer) connection fails. 

看到这张图片描述了对等连接的工作原理

webRTC 基础知识

在此处输入图像描述

于 2014-05-06T21:48:26.697 回答
0

您的其中一台 ICE 服务器仍应至少引用一个 stun 服务器。我会使用 'stun:stun.l.google.com:19302' || 'stun:23.21.150.121',即使你在技术上不需要一个。

但是,如果您没有 ICE 服务器,则无需担心收集候选人。可能发生的几件事。

  • 确保在创建报价和创建答案之前将流添加到每个连接,它表示您获得了用户媒体,但不是您将其添加到对等连接
  • 您没有设置本地和远程描述
    • 提供计算机应在创建时设置其本地描述
    • 应答计算机应将其远程描述设置为产品描述,并将其本地描述设置为他们创建的描述
    • 确保将答案 sdp 发送到初始提供计算机,并且该提供计算机将其设置为远程描述。

除非您添加所需的流,创建描述,然后相应地设置它们的本地和远程描述,否则流不会相互发送。

如果这不起作用,您可能应该发布您的页面代码。

于 2014-05-06T16:08:52.620 回答