2012-08-30 31 views
9

我跑我的WebRTC代碼鉻21的WebRTC - 視頻獲得BLOB,但它保持黑色

如果我在同一個Chrome中打開兩個選項卡,然後打開頁面內的WebRTC代碼。 一個選項卡用於發送視頻流;一個標籤是用於接收視頻流 它工作正常。

不過,如果我打開網頁有兩個隱身模式或兩個不同的Chrome瀏覽器, 我可以得到SDP候選人信息正確。看來,視頻可以解碼信息。

在遠程視頻,我只能看到enter image description here

此外,它似乎崩潰。我試圖點擊「關閉鉻」,但沒用。

有沒有人有類似的問題?

回答

10

雖然測試的WebRTC,我發現,當我們調用的錯誤地方peerConnection.addStream(…)發生這樣的情況----

你必須記住,在訂購的WebRTC 高度事項!


在更新時間:下午6點36分 - 週四,2014年7月17日(UTC)

空白視頻在下列情況下發生:

  1. 您使用STUN,而你的SSL證書已過期或其中包含無效條目。
  2. 您正在使用STUN,但它是企業防火牆,或醫院網絡或專用網絡,它阻止或隱藏外部IP地址或某些端口。
  3. 兩個對等方具有無效SENDRECV /只發送/ recvonly對
  4. 發盤人不重視流或是Firefox時,用戶只連接的音頻流,但是你正在使用OfferToReceiveVideo:true
  5. 你正在檢查其失敗的情況下對於HTMLMediaElement.HAVE_CURRENT_DATAmediaElement.pausedmediaElement.currentTime,而它是具有關於這些屬性的已知問題的android。

解決方案?

  1. 使用來自XirSys的TURN或install your own
  2. 確保您使用有效的SSL證書或使用HTTP代替。
  3. 確保提供者附加在流中;還要確保根據附加的流使用OfferToReceiveAudio/OfferToReceiveVideo
  4. 確保您沒有修改SDP;還嘗試比較兩個對等體之間的SDP並找出不匹配。

現在代碼的排序是一種罕見的問題,因爲我們都知道addStream應該在創建offer或answer之前調用;即使是重新談判的會議。

嘗試使用chrome://webrtc-internals和Firefox的about:config來查看這些瀏覽器中發生了什麼;並且始終使用控制檯日誌的onIceConnectionStateChange事件,該事件可幫助您檢查ICE連接檢查過程中的ICE代理failed或...

有時候,提前設置遠程sdp forferer會導致異常。對於createOffer/createAnswersetLocalDescription/setRemoteDescription例如總是使用onSdpError

peer.setRemoteDescription(remoteSDP, onSdpSuccess, onSdpFailure);


幾個演示資源:

  1. https://github.com/muaz-khan/WebRTC-Experiment/Demos
  2. https://github.com/mozilla/webrtc-landing

https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html

+0

真的!!!!你的意思是我應該做ICE然後addStream –

+0

這個過程是在創建報價的同時 - 你必須在創建PeerConnection後添加流 - 但是當創建答案時 - 你必須在調用setRemoteDescription之後添加流 - 我測試它;它爲我工作! ---這只是我個人的經歷! –

+0

感謝您的經驗,但是...... –

3

我有同樣的問題,我只是通過調用VideoElement.play()解決它的流連接作爲VideoElement.src

document.querySelector("#video").src = window.URL.createObjectURL(remoteStream); 
document.querySelector("#video").play(); 

之後不要等待等待loadedmetadata事件,因爲它不」 t似乎被觸發,但WebRTC流。

+0