WebRTC開發(fā)實(shí)踐:為什么你需要SFU服務(wù)器-創(chuàng)新互聯(lián)

當(dāng)你入門 WebRTC 之后,很快就會(huì)接觸到一個(gè)名詞,叫做:SFU,你可能很容易就在網(wǎng)上尋找到很多 SFU 的開源實(shí)現(xiàn),并并興致勃勃地開始編譯、部署和測試這些服務(wù)器,但是可曾想過,為啥我們的 WebRTC 應(yīng)用需要 SFU 服務(wù)器 ?

創(chuàng)新互聯(lián)主營澄邁網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,澄邁h5小程序定制開發(fā)搭建,澄邁網(wǎng)站營銷推廣歡迎澄邁等地區(qū)企業(yè)咨詢

1 WebRTC P2P 通話的網(wǎng)絡(luò)模型

WebRTC 開發(fā)實(shí)踐:為什么你需要 SFU 服務(wù)器

如圖是 WebRTC P2P 模式下的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),ClientA 和 ClientB 如果能夠順利建立 P2P 的連接,則可直接通過 P2P 互相交換數(shù)據(jù)。如果由于某些網(wǎng)絡(luò)環(huán)境原因,無法成功打通 P2P 連接的話,則可以通過一臺(tái) TURN Server 來中轉(zhuǎn)數(shù)據(jù)給對方。

這個(gè) TURN Server 是指支持 TURN 協(xié)議 的服務(wù)器,它扮演著一種網(wǎng)絡(luò)中繼的角色,支持把一個(gè) Client 的數(shù)據(jù)包透明轉(zhuǎn)發(fā)到多個(gè)其他的 Client 客戶端。

在這種簡單的 P2P 通話場景下,其實(shí)這種模型基本夠用了,根本不需要架設(shè)什么 SFU 服務(wù)器。

下面我們再近一步,看看多人通話的場景:

WebRTC 開發(fā)實(shí)踐:為什么你需要 SFU 服務(wù)器

如圖所示,多人通話跟單人通話唯一的不同就是每個(gè)客戶端都需要跟其他兩個(gè)端都分別建立 P2P 連接,我在《WebRTC 開發(fā)實(shí)踐:從一對一通話到多人會(huì)議》也介紹過這個(gè)場景。與一對一通話一樣,如果兩個(gè)端能夠順利建立 P2P 的連接,則直接通過 P2P 互相交換數(shù)據(jù);如果無法打通,則利用 Turn Server 來中轉(zhuǎn)數(shù)據(jù)。

我們把這種完全使用 P2P 方式的網(wǎng)絡(luò)拓?fù)浣Y(jié)稱之為 Mesh 結(jié)構(gòu),下面我們談?wù)勊膬?yōu)劣點(diǎn)。

2 WebRTC Mesh 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的優(yōu)劣

優(yōu)點(diǎn):

  • 邏輯簡單,容易實(shí)現(xiàn)

  • 服務(wù)端比較 “輕量”,TURN 服務(wù)器比較簡單,一定比例的 P2P 成功率可極大減輕服務(wù)端的壓力

缺點(diǎn):

  • 每新增一個(gè)客戶端,所有的客戶端都需要新增一路數(shù)據(jù)上行,客戶端上行帶寬占用太大。因此,通話人數(shù)越多,效果越差

  • 無法在服務(wù)端對視頻進(jìn)行額外處理,如:錄制存儲(chǔ)回放、實(shí)時(shí)轉(zhuǎn)碼、智能分析、多路合流、轉(zhuǎn)推直播等等

由此可以看到,mesh 結(jié)構(gòu)的缺點(diǎn)影響還是比較大的,真正商業(yè)化的應(yīng)用,是需要具備良好的通話質(zhì)量、服務(wù)穩(wěn)定性和可擴(kuò)展性的,因此,亟需一種新的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),能夠很好的規(guī)避 mesh 結(jié)構(gòu)的這些短板。

3 什么是 SFU ?

SFU 的全稱是:Selective Forwarding Unit,是一種通過服務(wù)器來路由和轉(zhuǎn)發(fā) WebRTC 客戶端音視頻數(shù)據(jù)流的方法。

WebRTC 開發(fā)實(shí)踐:為什么你需要 SFU 服務(wù)器

如圖所示,SFU 服務(wù)器最核心的特點(diǎn)是把自己 “偽裝” 成了一個(gè) WebRTC 的 Peer 客戶端,WebRTC 的其他客戶端其實(shí)并不知道自己通過 P2P 連接過去的是一臺(tái)真實(shí)的客戶端還是一臺(tái)服務(wù)器,我們通常把這種連接稱之為 P2S,即:Peer to Server。除了 “偽裝” 成一個(gè) WebRTC 的 Peer 客戶端外,SFU 服務(wù)器還有一個(gè)最重要的能力就是具備 one-to-many 的能力,即可以將一個(gè) Client 端的數(shù)據(jù)轉(zhuǎn)發(fā)到其他多個(gè) Client 端。

這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,無論多少人同時(shí)進(jìn)行視頻通話,每個(gè) WebRTC 的客戶端只需要連接一個(gè) SFU 服務(wù)器,上行一路數(shù)據(jù)即可,極大減少了多人視頻通話場景下 Mesh 模型給客戶端帶來的上行帶寬壓力。

SFU 服務(wù)器跟 TURN 服務(wù)器大的不同是,TURN 服務(wù)器僅僅是為 WebRTC 客戶端提供的一種輔助的數(shù)據(jù)轉(zhuǎn)發(fā)通道,在 P2P 不通的時(shí)候進(jìn)行透明的數(shù)據(jù)轉(zhuǎn)發(fā)。而 SFU 是 “懂業(yè)務(wù)” 的, 它跟 WebRTC 客戶端是平等的關(guān)系,甚至 “接管了” WebRTC 客戶端的數(shù)據(jù)轉(zhuǎn)發(fā)的申請和控制。

4 什么是 MCU ?

從上述 SFU 的定義可以看到,SFU 這種網(wǎng)絡(luò)拓?fù)淠P?,通過由 SFU Server 來實(shí)現(xiàn) one-to-many ,減輕了多人視頻通話場景下每個(gè)客戶端的上行帶寬壓力,但是下行依然是多路流,隨著通話人數(shù)的增大,下行帶寬的壓力依然會(huì)成比例的增大,那能否讓下行也只剩一路流呢?—— 可以,通過在服務(wù)器端合流后再下發(fā)即可解決,如下圖所示:

WebRTC 開發(fā)實(shí)踐:為什么你需要 SFU 服務(wù)器

這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),被稱之為 MCU,它的特點(diǎn)是,由 MCU Server 將各路客戶端上行的視頻流合成為一路,再轉(zhuǎn)發(fā)給其他客戶端。這種模型相比于 SFU 降低了多人視頻通話場景下客戶端的下行帶寬壓力,但是由于合流需要轉(zhuǎn)碼操作,對服務(wù)器端壓力比較大,而且下發(fā)給客戶端的流是固定的合流畫面,靈活性不是特別好。

5 為啥推薦選擇 SFU ?

綜上所述,純 mesh 方案無法適應(yīng)多人視頻通話,也無法實(shí)現(xiàn)服務(wù)端的各種視頻處理需求,最先排除在商業(yè)應(yīng)用之外。

SFU 相比于 MCU,服務(wù)器的壓力更小(純轉(zhuǎn)發(fā),無轉(zhuǎn)碼合流),靈活性更好(可選擇性開關(guān)任意一路數(shù)據(jù)的上下行等),受到更廣泛的歡迎和應(yīng)用,常見的開源 SFU 服務(wù)器有:Licode,Janus,Jitsi,mediasoup,Medooze 等等,各有特點(diǎn),大家可以去項(xiàng)目主頁了解更詳細(xì)的情況。

當(dāng)然,也可以組合使用 SFU + MCU 的混合方案,以靈活應(yīng)對不同場景的應(yīng)用需要。

5 小結(jié)

關(guān)于 WebRTC SFU 相關(guān)知識(shí)點(diǎn)就分享到這里了,如有疑問的小伙伴歡迎來信 lujun.hust@gmail.com 交流。另外,也歡迎大家關(guān)注我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。

WebRTC 開發(fā)實(shí)踐:為什么你需要 SFU 服務(wù)器

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標(biāo)題:WebRTC開發(fā)實(shí)踐:為什么你需要SFU服務(wù)器-創(chuàng)新互聯(lián)
分享地址:http://bm7419.com/article0/hdeoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站策劃、ChatGPT、App設(shè)計(jì)電子商務(wù)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)