使用WebRTC进行点对服务器音频流传输

6

我知道要建立点对点连接

发起者节点

  • 初始化共享信令通道
  • 初始化RTCPeerConnection对象(pc)
  • 使用getUserMedia请求本地流
  • 将本地MediaStream注册到pc上
  • 创建SDP Offer并发送给对等方
  • 逐步传输ICE candidate
  • 注册远程ICE candidate以开始连接检查

接收者节点

  • 监听和处理传递的远程Offer
  • 注册远程ICE candidate以开始连接检查
  • 生成SDP Answer并发送给对等方

但是我的WebRTC用例是基于点对服务器的,其中接收到的流在我的Node.js服务器上进行处理。在我的用例中,服务器具有公共可路由的IP地址,并且正在监听任何新的RTCPeerConnection请求。因此,建立点对点连接所涉及的一些步骤对我的情况似乎是不必要的。

  • Q1 建立点对服务器连接的步骤与点对点连接建立有何不同?

特别是

  • Q2 我是否仍然需要一个信令通道?
  • Q3 我是否仍然需要逐步传输ICE candidate?
1个回答

5
  1. 你的点对服务器连接与点对点连接没有任何区别。这意味着,你的服务器只是处理众多连接的一个对等方。你仍然需要为每个连接到服务器的连接创建唯一的连接,因此在连接设置方面不会有任何不同。但是你可以重用媒体流。
  2. 是的,你仍然需要一个信令服务器来建立和拆除每个客户端和服务器之间的连接(例如交换ICE/SDP)。它可以是与你的Node.js服务器相同的FQDN/物理盒子,但信令仍然必须发生。
  3. 是的,在客户端上。诚然,你的ICE候选者对于你的服务器(因为它是公开可访问的)可能很少,你可能不必查询它们(如果它真的是开放连接,应该只使用本地IP和任何可用端口,但这不太安全...),但客户端仍然必须将候选者传递给服务器,以便服务器的流可以命中客户端。

感谢您的有益回复。关于“但是您可以重用媒体流”,您能否详细说明一下?还有一件事。那么,我的Node.js服务器不能充当信令服务器以及处理众多连接的对等方吗? - jpen
是的,服务器可以同时充当信令服务器和对等方。媒体流重用仅在进行双向流传输时才会发生,这意味着服务器正在将某些内容流回客户端,您可以使用同一流对象进行多个不同的对等连接。 - Benjamin Trent
谢谢你的澄清。如果你知道一些进行点对服务器WebRTC通信的代码示例,请告诉我。干杯。 - jpen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接