并发本地提供会导致错误

时间:2014-04-25 07:11:14

标签: webrtc

在我的应用程序中,我大量使用重新协商来添加和删除本地流。不幸的是,当交换提议和答案时,重新谈判的使用可能会大大增加竞争条件的数量。

让我们考虑以下情况:

create a local offer without any local stream              -- success 
setLocalDescription(offer)                                 -- success  
user grant access to the video which causes renegotiation  -- success 
create a local offer with  local stream                    -- success
setLocalDescription(offer)                                 -- failed 

抛出的错误是:

Failed to set local offer sdp: Failed to push down transport description: Failed to set local identity.
  • 如果statusSignal是“have-local-offer”,我无法调用setLocalDescription?

  • 处理这种情况的正确方法是什么?

  • 我在考虑延迟第二次报价(包含新的本地流),直到第一次接听/报价握手完成。这不是最佳解决方案,但应该可行。你怎么看 ?

More info

1 个答案:

答案 0 :(得分:1)

我知道from another question直接附加协商事件处理程序并不方便,因为这会触发它两次(我不知道这是否属于你的情况)。我尝试的是在之后附加处理程序我已成功发送和接收SDP数据。然后我通过添加和删除流引起了谈判,这是完美的。另外,请确保在收到SDP对象时创建new RTCSessionDescription(<receivedObject>),然后将其附加到pc.remoteDescription