簡體   English   中英

使用 socket.io 流式傳輸網絡攝像頭

[英]Stream WebCam using socket.io

我一直在嘗試實現一個能夠處理以下場景的 Web 應用程序:

  • 同時將視頻/音頻從客戶端流式傳輸到其他客戶端(實際上是一組特定的客戶端,沒有廣播)和服務器。 數據源將是客戶端的網絡攝像頭。
  • 該流數據必須實時顯示在其他客戶端的瀏覽器上,保存在服務器端以用於“存檔”目的。
  • 它必須在 node.js + socket.io 環境中實現。

把它放在一些更具體的上下文中...... 場景是有一個人為他選擇的用戶創造了一個房間。 選定的用戶加入房間后,創建者開始從他/她的內置設備(網絡攝像頭)流式傳輸視頻/音頻。 所有客人都實時接收數據,而且數據正在發送到存儲它的服務器,以便在流和房間關閉后可以恢復。

我正在考慮將 Socket.IO 與 WebRTC 混合使用。 從理論上講,這兩者的結合似乎非常適合這項工作。 Socket.IO 非常適合通過將一些套接字分配給房間來收集特定的用戶集以及 WebRTC 要求的信號處理。 同時,WebRTC 非常適合聚集在同一個房間的用戶之間的 P2P 連接,訪問網絡攝像頭和我可能想要使用的其他內置設備也非常容易。

所以是的,理論上一切看起來都不錯,但我真的需要看到一些代碼在運行,這樣我才能真正嘗試自己實現它。 此外,我看到了一些問題:

  • 如何保存P2P連接發送的流? 顯然服務器無權訪問它。 我在想我可能會將服務器視為另一個“客人”,因此它只是與房間創建者的 P2P 連接的另一個端點。 不過,不知怎的,它感覺很前衛。
  • 將服務器視為創建者和客戶端之間的中間人不是更好嗎? 在某一時刻,與 P2P 相比可能會有一些可能微不足道的延遲,但大概對所有客戶端來說都是一樣的。 (我試過了,但我無法完成從網絡攝像頭到服務器的流式傳輸,但是這是另一個問題的主題,因為我在處理 MediaStream 時遇到了問題)

我一直在尋找一些不錯的解決方案,但沒有任何成功。 我已經看到有一個為 socket.io 制作的不錯的 P2P 解決方案: http ://socket.io/blog/socket-io-p2p/。 問題是 - 我認為它不能很好地處理數據流。 這些例子只提到了簡單的聊天應用程序,我需要比這更重的東西。

我真的很感謝一些具體的例子,文檔,任何可能讓我更接近它的實現的東西,因為我真的不知道如何處理它。

提前致謝:)

您的任務可以通過使用開源 WebRTC 服務器之一來解決。 例如, kurento

您可以實現流的模式:

  • 一對一
  • 一對多
  • 多對多

WebRtc-服務器架構

客戶端將通過 WebRTC 服務器相互連接。 因此,在服務器端,您可以記錄流,或將其發送以進行轉碼。

webSocket 用於與服務器通信。

您可以根據您的任務找到一些示例

視頻流向多個用戶是一個非常困難的問題,不幸的是需要大量的基礎設施才能實現。 您將無法通過 websocket 流式傳輸視頻數據。 WebRTC 也不是您所描述的可行解決方案,因為正如您所提到的,WebRTC 協議是 P2P,因為在流媒體中,用戶需要與所有“觀眾”建立直接連接。 這顯然不會超過少數“觀眾”。 WebRTC 更適用於直接視頻通話,例如在 Skype 中。

這里有一篇文章描述了一個有點流行的實時流媒體服務所使用的架構。 如您所見,實現任何規模的實時視頻都需要大量資源。

暫無
暫無

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

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