0

我正在尝试使用 webrtc 和 adapter.js 通过 MS Edge 中的sipML5 API连接音频呼叫,但它为 addremoteCandidate 提供错误超时。考虑发送候选人结束通知。

我已经尝试过发送此处提到的 addIceCandidate(null) , 但它不起作用,或者我发送错误。我用谷歌搜索,但没有足够的文档。

我的问题是我可以在哪里以及如何发送addIceCandidate(null)以便 adapter.js 会考虑它?

我的 RTCPeerConnection 代码

this.o_pc = new window.RTCPeerConn(a && !a.length ? null : {
            iceServers: a, 
            rtcpMuxPolicy: "negotiate",
            iceTransportPolicy: "all",
            bundlePolicy: "balanced",
            iceCandidatePoolSize: 0
            //gatherPolicy: "all",

        }, this.o_media_constraints);
        this.o_pc.onicecandidate = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onIceCandidate : function(e) {
            tmedia_session_jsep01.onIceCandidate(e, c);
        };
        this.o_pc.onnegotiationneeded = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onNegotiationNeeded : function(e) {
            tmedia_session_jsep01.onNegotiationNeeded(e, c);
        };
        this.o_pc.onsignalingstatechange = tmedia_session_jsep01.mozThis ? tmedia_session_jsep01.onSignalingstateChange : function(e) {
            tmedia_session_jsep01.onSignalingstateChange(e, c);
        };
this.o_media_constraints = {
        audio: true
    };
    if (tsk_utils_get_navigator_friendly_name() == "firefox") {
        tmedia_session_jsep01.mozThis = this;
        this.o_media_constraints.mandatory.MozDontOfferDataChannel = true;
    }

任何帮助,将不胜感激。

谢谢

4

1 回答 1

2

此警告表明您从不调用 addIceCandidate(null)。当另一端完成候选人收集时,即 pc.onicecandidate(event) 被称为 event.candidate 未设置。然后您需要发送一个信令消息,例如 {type: 'end-of-candidates'} 这将导致在 Edge 中调用 addIceCandidate(null)。

如果您不这样做,adapter.js(或者更确切地说是 Edge/ORTC shim)会在一段时间后为您执行此操作,但这远非最佳。

于 2019-08-04T13:21:26.013 回答