【问题标题】:WebRTC: How to add stream after offer and answer?WebRTC:如何在提供和回答后添加流?
【发布时间】:2013-04-15 12:20:57
【问题描述】:

我正在开发 webRTC 视频通话。我成功实现了数据通道。现在我想将视频流添加到同一个对等连接。

我已阅读应在回答和提议之前添加流。有没有办法在回答或提议后添加流?

如果我在提议或回答之前添加了流,我该如何停止流并在需要时重新开始?

维护这么多流会不会有什么问题?

【问题讨论】:

    标签: javascript webrtc


    【解决方案1】:

    要在创建完整的信令后添加流,Peer 连接应该与流重新协商

    pc1.addstream(stream)
    

    然后再次创建报价并将其发送给其他 Peer。

    远程对等方将添加流并发送应答 SDP。

    停止流:

    stream.stop();
    pc1.removeStream(stream);
    

    【讨论】:

    • 如果我使用第一个 createOffer() 创建了一个 DataChannel,我是否可以在 addstream() 之后使用它来发送第二个 createOffer() 的数据,或者我会松散第二个createOffer() 那个连接?
    • 您可以使用使用first offer创建的数据通道。
    • 所以 DataChannel 连接和流在第二次调用 createOffer() 后仍然存在?这是一个很酷的功能! :-)
    【解决方案2】:

    根据我的经验,Konga Raju 的建议没有奏效。我无法发送“更新的报价”并让视频流真正发生。

    我发现这一系列事件适用于我的情况,我希望将视频从对等方 1 流式传输到对等方 2。

    1. 为对等方设置某种方式来交换消息。 (可悲的是,人们实现这一点的方式的差异使得不同的 WebRTC 代码示例如此不可通约。)
    2. 在每一侧,为重要的信号事件设置处理程序。 (有些人报告说您需要在特殊时间创建这些处理程序,但我没有发现这种情况。 ) 有 3 个基本事件:
      • 对方派来的冰候选==>用它打电话给addIceCandidate
      • 报价消息 ==> SetRemoteDescription & 回答 & 发送它
      • 回复消息 ===> SetRemoteDescription
    3. 在每一端,使用我们关心的事件处理程序创建 peerconnection 对象:onicecandidate、onremovestream、onaddstream 等。
      • ice 候选者从 peerconnection 对象中弹出 ===> 将其发送到另一端
    4. 当两个对等点都存在并且所有处理程序都到位时,对等点 1 会收到某种触发消息以开始视频捕获(getUserMedia 调用)
    5. 一旦getUserMedia 成功,我们就有了一个流。在对等连接对象上调用addStream
    6. 然后对等方 1 提出要约
    7. 由于我们之前设置的处理程序,对等方 2 发送了一个答案
    8. 与此同时(并且相当不透明),对等连接对象开始生成候选冰。它们在两个对等点之间来回发送并进行处理(上面的第 2 步和第 3 步)
    9. 由于以下两个条件,流式传输会自行开始,不透明:
      • 提供/回答交换
      • ice 候选人收到、交换和处理

    在第 9 步之后我还没有找到添加视频的方法。当我想更改某些内容时,我会返回第 3 步。

    【讨论】:

    • 你可以做到完全不同,例如,你的步骤#4 getUserMedia - 你可以在开始信号之前开始本地视频捕获(预览)(步骤 1)。我在这里阅读,因为我在尝试执行 DataChannel 然后 AddStream 时遇到了麻烦......它改变了在 DataChannel 准备就绪后执行 AddStream 的事情。
    • 天哪,不需要再次创建对等连接,我们可以从#step 4开始。
    【解决方案3】:

    MediaStream 应该首先添加到 peerconnection 中,然后才能交换 offer、answer、candidates。如果调用了 onAddStream() ,则表示您正在接收远程视频。

    【讨论】:

    • 你误解了这个问题。 OP 想要在连接建立后添加一个流。
    猜你喜欢
    • 2018-04-17
    • 2021-04-03
    • 2017-08-13
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多