在建立视频通话期间,在调用createOffer或createAnswer之后开始收集候选人。在我调用createOffer或createAnswer之前,我想为本地同行获取所有本地冰候选人。这样我就可以在sdp描述中设置所有这些,并且不需要将它们分别发送到远程对等体,因为它们将在sdp中一起进行。有可能吗?
UPD: 我想要的只是收集冰候选人并保留它们。之后,我想创建优惠和asnwers,但没有等待候选人聚会fininsh。另外如何手动将Ice候选添加到描述中?是否有可能在不重新创建RTCPeerConnection的情况下解除Ice候选人的收集?
答案 0 :(得分:5)
候选人收集仅在您调用setLocalDescription时开始。
如果你想要一个包含所有候选人的SDP,请等待没有候选人的onicecandidate事件,并检查peerconnection的localDescription.sdp,其中包含到目前为止收集的所有候选人。
答案 1 :(得分:1)
您可以通过设置icecandidatepoolsize来减少延迟-然后浏览器将尝试在要约/答案之前预先收集候选人。
请参阅: https://github.com/pipe/two/blob/master/index.html#L181
答案 2 :(得分:0)
根据https://developer.mozilla.org/zh-CN/docs/Web/API/RTCPeerConnection/onicecandidate
当回调中的onicecandidate事件为null时,发出对等连接已完成收集ice候选者的问题。因此,到那时,创建要与其他对等连接的要约,要约的SDP信息将包含'a = candidate'属性。
参考:https://aggresss.github.io/webrtc-samples/src/content/peerconnection/pc1-mod/