首頁 > web前端 > js教程 > 主體

WebRTC SFU:完整指南。

PHPz
發布: 2024-07-19 14:32:17
原創
932 人瀏覽過

什麼是WebRTC SFU(選擇性轉發單元)?

選擇性轉發單元或 SFU

SFU是一個基於伺服器的架構,用於webrtc中進行多方視訊通話、音訊通話和資料傳輸。

SFU 充當裝置之間的中介,從多個裝置接收媒體串流,然後決定哪些串流必須傳送到哪些裝置。

什麼是 WebRTC?

WebRTC 是一個開源項目,使用它您可以在設備之間實現即時音訊、視訊和資料傳輸

WebRTC 在網頁瀏覽器和應用程式中運行,WebRTC 受到幾乎所有現代瀏覽器的支持,並且是視訊、音訊通訊的標準

Image description

SFU 或選擇性轉送單元如何運作

這是有關 SFU 如何運作的逐步指南

第 1 步驟客戶端連線與媒體擷取

  1. 參與者連結

每位參與者先與SFU建立連結。此過程涉及交換會話描述的信令伺服器。

會話描述包含重要訊息,用於建立會話。

2.媒體串流擷取

在客戶端,從參與者裝置擷取媒體串流,例如來自麥克風的音訊、來自攝影機的視訊等。下一步,這些流將發送到 SFU

第2步:串流傳輸到SFU

  1. 編碼並發送串流:客戶端裝置使用視訊和音訊編解碼器對媒體串流進行編碼,並將其傳送至SFU

如果需要加密,可以使用 RTP 協定或 SRTP 協定來完成

2. SFU 收據

SFU 或選擇性轉發單元從每個連接的裝置接收單獨的流,並為每個裝置維護單獨的入站流。

SFU 的第 3 步流處理

  1. 禁止混合

在 SFU 中,與 MCU 相比,所有流都是相互獨立的,並且沒有混合

2.選擇性轉送

SFU 從連接到 SFU 的每個裝置接收單獨的串流,然後 SFU 為每個參與者維護單獨的串流

第 4 步:透過 SFU 進行流分配

  1. 適應:

在將串流轉送到 uesrs 之前,SFU 對串流執行某些調整,例如選擇不同品質的視訊編解碼器以及在不同的聯播串流之間進行選擇。

這些是基於接收客戶端 CPU 和頻寬能力

2*。轉發流*

SFU轉送每個客戶端請求的流。

客戶端設備可以從 SFU 接收多個串流,甚至單一視訊和音訊資料流

  1. RTP 或 SRTP 封包

媒體以 RTP 或 SRTP 封包形式傳送,因為不同的用戶端裝置可能有不同的 CPU 和頻寬限制。

SFU 優化串流資料包的流動,讓串流媒體流暢,視訊品質在裝置上流暢

步驟5 客戶接待及展示

  1. 解碼:每個客戶端從 SFU 接收 RTP 串流,然後客戶端對流進行解碼並將其呈現在螢幕上

  2. 同步:音訊和視訊同步很重要,它是在客戶端層級處理的。用戶端使用 RTP 串流中的時間戳記和序號來平滑同步視訊和音訊播放

SFU vs p2p vs MCU

在本節中,讓我們考慮 SFU(選擇性轉送單元、點對點或 P2p)與 MCU(多點控制單元)之間的差異

1.  選擇性轉送單元SFU

選擇性轉發:SFU接收多個流並選擇性地將流轉發到設備,而不改變流內容

基於伺服器:SFU 依賴伺服器,但該伺服器用於路由流,而不用於其他任何用途。

優點:

可擴充性:SFU 具有高度可擴充性,它透過管理將哪個串流傳送到任何客戶端裝置來減少單一客戶端裝置的負載

處理要求低:因為SFU只是轉發流,所以不會對流進行任何處理,從而減少延遲和CPU處理要求

串流彈性:

客戶端設備可以接收多個流或僅接收一個流或根本不接收流,這完全取決於客戶端設備請求哪個流並需要將其顯示在屏幕上

缺點:

頻寬密集型:SFU 在伺服器端是頻寬密集型的,因為每個串流都由伺服器接收,且 SFU 應該有 CPU 和頻寬來處理所有串流

2.點對點 P2P

在 P2p 架構中,每個參與者直接連接到另一個參與者,而不需要中間伺服器

但通常需要 STUN 伺服器或 TURN 伺服器來穿越 NAT 並在 NAT 周圍中繼流

如果您正在尋找 Turn 伺服器,您可以考慮計量 TURN 伺服器服務提供者

Metered 是一家全球 TURN 伺服器供應商,在世界各地擁有 TURN 伺服器,連接到距離 TURN 伺服器最近的用戶,以實現最小延遲和最佳效能

缺點:

如果會議中有多個設備,每個參與者設備必須處理多個流。

這對所有客戶端設備來說都是 CPU 和頻寬密集的。為此,您可以考慮計量 SFU

多點控制單元

MCU 混合所有傳入流,並從多個流中建立一個流或幾個流,然後將其發送到所有客戶端

MCU需要伺服器上大量的CPU運算和資源,在傳輸流時也會產生延遲,但它有一個優點,它可以大幅減少客戶端設備上的運算和頻寬需求

以前行動裝置速度很慢,網路基礎設施也很差,那時候MCU就發揮了很大的作用

但如今,隨著技術的進步,它可能會帶來延遲增加和視訊傳輸緩慢的糟糕體驗。

SFU 在 WebRTC 的優勢

以下是 SFU 在 WebRTC 中的一些優勢

1.可擴充性

SFU在WebRTC中最重要的優勢是可擴充性。您也可以縮放 P2P 視訊通話,但很難建立網格並對其進行縮放

  • 減少客戶端頻寬

當您以對等 2 對等格式與多個用戶端裝置進行視訊通話時,每個用戶端必須將其串流傳送到所有其他用戶端,反之亦然。

因此,每個客戶端對頻寬和 CPU 的需求呈指數級增長

一些不具備極高頻寬和 CPU 運算能力的客戶端在視訊通話方面遇到困難

2.改善品質管理

SFU 可以明智地決定將哪些串流傳送到哪些客戶端,從而節省時間並提高視訊品質

  • 流適配

SFU可以根據接收裝置的頻寬和CPU容量來調整流。

如果用戶端裝置的頻寬較低,則 SFU 可以向該特定裝置發送低品質串流,以便視訊流暢運作而無需緩衝

3.減少客戶端的處理負載

SFU 處理流程管理所需的大部分資料處理,客戶端裝置本身從所有繁重的工作中解放出來

這對於行動裝置和處理能力(即 CPU 能力)較低的裝置很有幫助

  • CPU 密集程度較低

客戶端裝置不需要對進入 SFU 進行處理的多個流進行編碼和解碼,而是由 SFU 為它們執行此操作

因此,這些設備消耗的電池電量更少,運行溫度更低,並且需要更少的 CPU 時間

  • 使用者體驗

CPU 處理的減少帶來更流暢的介面、更涼爽的設備和更好的整體用戶體驗

4.媒體處理的彈性

SFU 在您想要如何處理媒體串流以及如何在參與者用戶端裝置上顯示影片方面提供更大的靈活性

  • 單獨流控制

客戶或會議參與者可以選擇他們想要下載的串流以及他們想要如何在螢幕上顯示串流

它們也能夠下載不同品質的串流或使其自動,以便 SFU 根據客戶端設備頻寬容量和 CPU 能力選擇最佳串流

  • 支援進階功能

SFU 或選擇性轉發單元支援各種進階功能,例如

同播(能夠發送單一視訊串流的多個品質)、可擴展視訊編解碼器以及更多

5.增強的靈活性和安全性

所有通過 SFU 的資料流都是端對端加密的,這意味著沒有人知道什麼資料流正在通過它,甚至連 SFU 也不知道

採用DTLS、SRTP等加密協定進行端對端加密

SFU 可以記錄交互,但也無法出於合規目的攔截流。

Image description

計量 TURN 伺服器

  1. API: 使用強大的 API 進行 TURN 伺服器管理。您可以執行以下操作:透過 API 新增/刪除憑證、透過 API 檢索每個使用者/憑證和使用者指標、透過 API 啟用/停用憑證、透過 API 按日期檢索使用資料。

  2. 全球地理位置定位:自動將流量定向到最近的伺服器,以實現盡可能低的延遲和最高的品質效能。全球任何地方的延遲均低於 50 毫秒

  3. 全球所有地區的伺服器:多倫多、邁阿密、舊金山、阿姆斯特丹、倫敦、法蘭克福、班加羅爾、新加坡、雪梨、首爾、達拉斯、紐約

  4. 低延遲: 低於 50 毫秒的延遲,在世界任何地方。

  5. 成本效益:即用即付定價,並提供頻寬和大量折扣。

  6. 輕鬆管理:取得使用日誌、帳戶達到門檻限制時的電子郵件、帳單記錄以及電子郵件和電話支援。

  7. 符合標準: 符合 UDP、TCP、TLS 和 DTLS 的 RFC 5389、5769、5780、5766、6062、6156、5245、5768、63366、6062、6156、5245、5768、6336、268962、5768、6362、62962。

  8. 多租用戶: 建立多個憑證並按客戶或不同應用程式分開使用。取得使用日誌、計費記錄和閾值警報。

  9. 企業可靠性: SLA 正​​常運作時間為 99.999%。

  10. 企業規模:併發流量或總流量不限制。計量 TURN 伺服器提供企業可擴充性

  11. 每月 5 GB 免費: 透過免費方案每月獲得 5 GB 免費 TURN 伺服器使用量

  12. 在連接埠 80 和 443 上運作

  13. 支援 TURNS + SSL 以允許透過深度封包偵測防火牆進行連線。

  14. 同時支援 TCP 和 UDP

  15. 免費無限制 STUN

以上是WebRTC SFU:完整指南。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!