第一次调用后使用 Firefox for Android 时 ICE 失败

ICE Failed when using Firefox for Android after first call

在某些设备(特别是三星)上,我在建立 P2P 连接时发现以下错误:

Error processing ICE candidate- Failed to set remote offer sdp: The order of m-lines in subsequent offer doesn't match order from previous offer/answer

如果我第一次建立连接,它工作得很好,但如果我第二次尝试,它会失败,直到我等待一段时间,即使我强制关闭 P2P 连接。对于 Android 或每个设备,Chrome 不会发生这种情况。

我在设置 Ice 候选之前的代码:

    var candidate = new RTCIceCandidate({
        sdpMLineIndex: evt.sdpMLineIndex,
        sdpMid       : evt.sdpMid,
        candidate    : evt.candidate
    });
    peerConn.addIceCandidate(candidate, onSuccess, onFailure);

看来我没有正确切断本地流,导致摄像头和麦克风看起来还在使用中。

 if(localstream){
        localstream.getTracks()[0].stop();
        localstream = null;
    }

我认为三星的层使 Firefox 的行为有所不同,因为它只发生在我测试的所有设备的三星设备上。