2

一切正常(createOffer,createAnswer,iceCandidates,...),但是传入的 remoteStream 有 2 个轨道,正在工作的 audioTrack 和不使用 readyState 的 videoTrack:“静音”。

如果我在页面加载时执行 createOffer,然后使用相同的 peerConnection 再次启动调用 do crreateOffer,则视频也会正确显示(但随后我将在 firefox 中出现“无法在状态 have-local-offer 中创建报价”。

任何想法可能是什么问题?(代码太复杂,无法在这里展示)

4

2 回答 2

0

两边的本地视频可以吗?
-> 在 PC 中,只有一个浏览器可以随时访问相机,无论是 chrome/firefox)
-> 尝试在两台不同的机器或 chrome-to-chrome 或 firefox-to-firefox 之间调用。

“Cannot create offer in state have-local-offer”
这意味着您已经创建了一个报价,并在没有设置远程应答的情况下尝试再次创建。

再次调用 createOffer 不是一个好主意。确保您以以下方式(同步)创建报价。

  • 收到流gUM回调后,添加peerConnection。
  • 添加流后,然后创建报价,如果答案设置远程报价也在创建答案之前。
于 2017-06-29T03:02:52.767 回答
0

我在 iOS 应用上准备 MediaStream 时遇到了这个问题。事实证明,我没有通过正确的RTCMediaConstraints

切换使用后问题解决[RTCMediaConstraints defaultConstraints]

例如:

- (RTCVideoTrack *)createLocalVideoTrack {
    RTCVideoTrack* localVideoTrack = nil;

    RTCMediaConstraints *mediaConstraints = [RTCMediaConstraints defaultConstraints];
    RTCAVFoundationVideoSource *source =
    [[self peerConnectionFactory] avFoundationVideoSourceWithConstraints:mediaConstraints];
    localVideoTrack =
    [[self peerConnectionFactory] videoTrackWithSource:source
                           trackId:kARDVideoTrackId];
    return localVideoTrack;
}
于 2017-08-04T20:37:09.203 回答