簡體   English   中英

Chrome 不生成冰候選,WebRTC

[英]Chrome does not generate the ice candidate , WebRTC

我正在嘗試在本地使用 Chrome 到 Chrome 瀏覽器的兩個對等方之間建立視頻通話,而不是使用STUN/TURN服務器。

想象第一個同伴的名字是“ Sara ”,她以呼叫者的身份呈現視頻通話。 第二個同伴的名字是“比爾”,他是一個觀眾,只看薩拉的視頻。

1- Sara 的計算機生成一個報價並使用pc.setLocalDescription(offer)將其設置為本地描述。

2- 它使用信令服務器向 Bill 發送生成的報價。

3- 比爾的計算機使用pc.setRemoteDescription(offer)將來自 Sara 的傳入報價設置為遠程描述。

4- Bill 生成一個答案並將其設置為本地描述。

5- Bill 使用信令服務器將生成的答案發送給 Sara。

6- Sara 得到答案並將其設置為遠程描述。

我已經為雙方的那些冰候選人定義了一個事件偵聽器:

pc.onicecandidate = (event)=>{
   console.log("Event : ",event);
   pc.addIceCandidate(event.candidate);
};

在 Chrome 中它從不調用pc.onicecandidate ,我的意思是onicecandidate從不執行和記錄,但在 Firefox 它記錄一個事件 object ,它的candidate屬性等於null

請有人能告訴我pc.onicecandidate = (event)=>...何時調用?

當 setLocalDescription() 成功時,onicecandidate 調用。

在 onececandidate 中,事件參數將有自己的候選人。

因此,您必須將 Sara 的候選人發送給 Bill,反之亦然。

如果 Sara 或 Bill 收到對手的候選人,則必須將該候選人添加到 pc。

const pc = new RTCPeerConnection();

pc.onicecandidate = evt => {
    // send evt.candidate to opponent
    // you don't need to add own candidate self.
};

...

pc.createOffer().then(sdp => {
    pc.setLocalDescription(sdp); // onicecandidate invokes !
    // send sdp to opponent.
}).catch(err => console.error(err));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM