2014-08-30 134 views
0

我想建立一個Web應用程序,讓兩個同行使用視頻和音頻流與HTML5和沒有插件(IE除外,我假裝使用getUserMediajs使用閃回後備)。音頻和視頻會議與NodeJS

我也想使用NodeJS傳輸數據但我不知道從哪裏開始。在一個例子:

點對點是一種< --->節點JS < --->對等體B

我很感興趣,這同行2服務器2同行方法,而不是一個對等體的PeerPeerJS這樣的解決方案,因爲:

1)我認爲它會更兼容所有瀏覽器。 如果這不完全正確,請告訴我。 2)PeerJS(,我對不感興趣)在某些情況下依賴黑魔法STUN-TURN-ICE信令。我在某處讀到只有70%的連接適合這種傳輸方式,我承受不起30%的損失。再次讓我知道如果這不是完全真實的

我已經玩過socket.io,知道getUserMedia()獲取用戶攝像頭的概念,但不知道如何將其與socket.io鏈接並將其傳輸到其他客戶端。

+1

如果您打算使用Flash for IE,您將需要某種形式的流媒體橋(在這種情況下,因此不是Peer2peer)。另外,70%的病例只需要STUN。這個比例正在談論需要轉向。幾乎所有的情況下都需要NAT穿越,這取決於什麼樣的情況。 – 2014-08-30 17:10:25

+0

感謝您的反饋。那麼,總有(98%〜99%)使用STUN或TURN(即30%的conns)的機會,我們可以有P2P連接嗎? – Axel 2014-08-30 17:21:48

+1

Stun將在約70%的時間內穿越nat遍歷。再次,在不支持WebRTC(即IE)的瀏覽器中,您將不得不中繼流量(解密,正確的編碼等)。 – 2014-08-30 17:47:57

回答

0

無論你做什麼,你需要在瀏覽器上支持WebRTC(「無插件」)。因此,「會更將兼容所有的瀏覽器」是一個有爭議的問題,因爲browser support

+0

你說得對,我應該提到我計劃使用[getUserMediajs](https://github.com/addyosmani/getUserMedia.js)讓IE使用閃回回退功能,然後_somehow_發送該數據使用NodeJS到另一個對等體。 – Axel 2014-08-30 14:29:17

+0

因此,本質上你要在自定義後備和PeerJS(或你選擇的任何webrtc解決方案)之間搭建溝通橋樑。快樂源碼瀏覽:) – rollingBalls 2014-08-30 14:33:55

2
  1. 瀏覽器的兼容性無關與添加服務器端組件。您可能是p2p或p2s2p,如果您發送的內容無法被接收瀏覽器識別,則不起作用。

  2. ICE是強制 for webrtc,你不能沒有,期間。默認情況下,您只能連接到同一網絡中的計算機(主持人候選人)。如果您提供STUN服務器,則可以將70%的案例連接在一起,而在企業環境中則少得多。 http://webrtcstats.com/webrtc-revolution-in-progress/擁有某些供應商的最新統計信息。您可以看到,對於社交網站,截至2014年6月,92%的電話可以通過使用簡單STUN的防火牆和NAT工作。剩下的被叫需要通過TURN服務器進行中繼。你有很多免費的STUN服務器提供商,這是你應該使用的最低限度。

  3. webRTC for Desktop IE和Safari。

雖然閃存回調很有趣(閱讀,易於),他們暫停了兩個問題:

  • 它們不會產生與對等連接或與HTML5兼容的視頻流。與對等連接方式不兼容,您無法發送圖像或視頻,但只能在本地使用。不兼容HTML5意味着你不能在一個元素中使用生成的圖像和視頻,而且你也沒有簡單的方法將它渲染到Flash插件元素之外。在您指向的墊片的情況下,他們從Flash插件複製到每個單幀的HTML,並且他們在讀到我時提到,這在計算上廣泛用於生活視頻。
  • flash使用來自webrtc的不同協議(RTMP,RTMFP,..)和編解碼器,它們不能相互操作。您需要單獨維護或者有一個複雜的雙重使用基礎設施來處理它。例如,OpenClove是一家提供這種雙用途基礎設施的供應商。

另一種解決方案是在Desktop IE和Safari上安裝一個webRTC插件(不是flash),它實現了「純粹的」webRTC。在這種情況下,您可以直接與Chrome,Firefox,Opera以及任何其他實現本地webRTC 1.0的瀏覽器進行互操作。我們建議免費(無成本)和所有(非供應商特定)插件here