首页 文章

WebRTC:如何在提供和回答后添加流?

提问于
浏览
20

我正在进行webRTC视频通话 . 我已成功实施datachannel . 现在我想将视频流添加到同一个对等连接 .

我已经读过应该在回答和提供之前添加流 . 有没有办法在回答或提供后添加流?

如果我在提供或回答之前添加了流,我怎么能停止流式传输并在需要时再次启动它?

维护这么多流可能有任何问题吗?

3 回答

  • 14

    要在创建完整信令后添加流,Peer连接应为 renegotiate with stream .

    pc1.addstream(stream)
    

    然后再次创建优惠并将其发送给其他同行 .

    远程对等体将添加流并发送应答SDP .

    要阻止流:

    stream.stop();
    pc1.removeStream(stream);
    
  • -2

    根据我的经验,Konga Raju建议不起作用 . 我无法发送“更新的优惠”并且实际上发生了视频流 .

    我发现这个事件序列适用于我的情况,我希望将视频从对等体1流式传输到对等体2 .

    • 为对等方设置了一些交换消息的方法 . (人们如何实现这一点的差异使得不同的WebRTC代码样本如此不可通约,令人遗憾 . )

    • 在每一侧,为重要的信令事件设置处理程序 . (有些人报告说你需要在特殊时间创建这些处理程序,但我没有发现这种情况 . )有3个基本事件:

    • 从对方发送的冰候选人==>用它来调用 addIceCandidate

    • 报价消息==> SetRemoteDescription &做出回答并发送

    • 答案留言===> SetRemoteDescription

    • 在每一侧,使用我们关心的事件处理程序创建peerconnection对象:onicecandidate,onremovestream,onaddstream等 .

    • ice候选对象弹出对等连接对象===>将其发送到另一侧

    • 当两个对等体都存在且所有处理程序都到位时,对等体1获得某种触发消息以开始视频捕获( getUserMedia 调用)

    • 一旦 getUserMedia 成功,我们就有了一个流 . 在对等连接对象上调用 addStream .

    • 然后同伴1提出要约

    • 由于我们之前设置的处理程序,peer 2发送了一个答案

    • 与此同时(并且相当不透明地),对等连接对象开始产生冰候选者 . 他们在两个同伴之间来回传递并处理(上面的步骤2和3)

    • 由于两个条件的原因,不透明地开始流式处理:

    • 提供/回答交换

    • 冰候选人收到,交换和处理

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

  • 10

    首先应该将MediaStream添加到peerconnection,然后才能进行提议,答案,候选人的交换 . 如果调用onAddStream(),则表示您正在接收远程视频 .

相关问题