【问题标题】:How looks WebRTC peer negotiation workflow?WebRTC 对等协商工作流程如何?
【发布时间】:2015-11-29 23:02:53
【问题描述】:

我需要开发一个自定义 WebRTC 对等体(我需要在 Web 浏览器和非浏览器之间建立音频或/和数据连接)。然而,我很难找到正确、清晰的握手阶段描述。

How to create data channel in WebRTC peer connection? 等问题的答案并不完全有帮助,因为它们不太详细。具体来说,他们对 SDP 的内容只字未提。

谁能解释一下或推荐任何好的文档?

【问题讨论】:

  • 你指的是信令吗?
  • 是的。我知道我的职责是建立一个渠道来最初向同行提供报价/答案,但我找不到如何构建这些消息的详细说明。
  • 从 ICE 开始:tools.ietf.org/html/rfc5245 - 它还涵盖了 SDP 的基本时刻。基本上,您需要从 ICE 和 STUN/TURN 开始,然后继续使用 SDP。在那个阶段,您的应用程序将能够与 SDP 数据包交换并通过信令阶段。之后,您将需要为您的客户端实现 DTLS 协议支持。然后是 SRTP/SCTP。

标签: webrtc


【解决方案1】:

Here is a page with some graphs showing how the signaling process works。基本上,你首先设置一些客户端的东西:

  • 对等连接工厂;生成 PeerConnections,
  • 对等连接;一个用于与您想要的另一个对等方的每个连接(通常是 1 个),
  • 媒体流;从您的客户端设备连接音频和视频。

然后你生成一个SDP offer

peerConnection.createOffer();  

在调用方并将其发送给被调用方。被调用者设置这个offer

peerConnection.setRemoteDescription(insert-the-offer-here);

并生成一个SDP answer

peerConnection.createAnswer();

并将其发送回调用者。调用者收到这个answer 并设置它。

peerConnection.setRemoteDescription(insert-the-answer-here);

调用者和被调用者都得到一个调用

onAddStream() {...} //needs to be implemented in your code

设置了调用者的offer 时的被调用者和设置了被调用者的answer 时的调用者。此回调表示连接的开始。
您也可以使用ICE (STUN/TURN) 来避免firewallNAT 问题,但这是可选的。尽管在生产代码中,您可能还是想实现它。

注意:Webrtc 文档稀缺且可能会发生变化,请对您阅读的有关 webrtc 的所有内容(至少是目前编写的所有内容)持保留态度...

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多