2012-11-15 16 views
5

我正在Chrome 23上建立WebRTC連接。要連接本地流,您需要允許瀏覽器使用攝像頭和麥克風。在來電方,我正在檢查是否可以獲得本地流,直到此刻我纔會發送提議。然後發送報價,瀏覽器立即開始發送ICE考生。發送答案之前收到ICE考生的錯誤

然後,如果遠程瀏覽器沒有獲得本地媒體流,但我收到peerConnection.addIceCandidate(candidate)上的SYNTAX_ERR: DOM Exception 12,對於收到的每個ICE候選者。

我在addIceCandidate上檢查了documentation,但沒有關於先決條件的信息。

我想我可以通過延遲發送ICE候選人,並等待遠程客戶端添加本地流的信號,但這是額外的通信需求,看起來不正確。

在發送答案和附加本地媒體流之前,我能否以某種方式將遠程ICE候選人添加到webkitRTCPeerConnection

+0

對於第一個終點,我在創建優惠後檢查遠程ICE候選人(https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L408)對於第二個終端,當第二方知道第一個同伴將在幾秒鐘內向他發送報價時,我會檢查遠程ICE候選人! (https://github.com/muaz-khan/WebRTC-Experiment/blob/master/ASP.NET-MVC/JavaScript.js#L229) –

+0

感謝你的例子:)。我現在的問題雖然不同。設置'remoteDescription'後,我可以獲得ICE候選人的罰款。但是,當我收到所有ICE候選人後延遲允許媒體訪問時,接收方不會發送候選人。您通過強制用戶在進入房間之前允許媒體訪問來處理此問題。但這不是我的選擇。 – Episodex

回答

6

在我寫完這個問題後,我的腦海裏回答了一個問題......在接收ICE候選人之前,不需要附加本地流,但應該設置remoteDescription(這應該在接受報價時完成)。在我的代碼中,我等待着設置remoteDescription併發送答案,直到瀏覽器獲取本地流。

+0

你好@Episodex,你用什麼設置remoteDescription來等待?非常感謝! –

+1

@GuillaumeCisco據我記得我只是設置1秒的間隔,等待,但它是錯的!如果你和我有同樣的問題,那麼只要設置'remoteDescription'即可訪問攝像機。這樣瀏覽器將處理ICE候選人並建立連接。然後,當視頻流可用時,瀏覽器(或您的代碼 - 我現在不記得了)將向對等方發送新的本地描述,並且視頻將通過。但是,這是兩年前,自那時以來可能會發生很多變化(希望更好)。 – Episodex