將WebRTC用于多人音視頻通信
? ? ? ?WebRTC非常適合點(diǎn)對(duì)點(diǎn)(即一對(duì)一)通信。 但是,當(dāng)我與客戶討論超出一對(duì)一(即一對(duì)多或多對(duì)多)的解決方案和服務(wù)時(shí),問(wèn)題就出現(xiàn)了:“我應(yīng)該采用哪種架構(gòu)?”。 有些服務(wù)提供商希望復(fù)用他們網(wǎng)絡(luò)中的組播支持(我們正在為此嘗試做一些實(shí)驗(yàn)),有些正在探索基于聯(lián)播(simulcast)的解決方案,還有一些正在考慮像MCU /Mixer這樣的集中式解決方案,而其中一些 只是愿意通過(guò)使用基于Mesh的技術(shù)將負(fù)擔(dān)放在端點(diǎn)(endpoint)上。
? ? ? ?盡管能實(shí)現(xiàn)WebRTC多人音視頻的方案,該技術(shù)最流行的用途不局限于多方視頻會(huì)議場(chǎng)景。不要以為只是傳統(tǒng)的音視頻會(huì)議室,更多的情況包括:智能硬件、ipcamera、在線課堂,實(shí)時(shí)直播等。在每種情況下,核心功能都能夠?qū)?lái)自多個(gè)來(lái)源的媒體流分配到多個(gè)目的地。因此......如果您是服務(wù)提供商,您如何使用WebRTC端點(diǎn)實(shí)施多方拓?fù)洌?br />
? ? ? ?根據(jù)您的要求,有幾種不同的架構(gòu)可能是合適的。這些架構(gòu)基本上圍繞兩個(gè)方面:
☆集中式 VS 點(diǎn)對(duì)點(diǎn)(P2P)
☆Mixing VS Routing
? ? ? ?我將在這里描述最受歡迎的解決方案。如果您需要更深入地了解協(xié)議含義和實(shí)施細(xì)節(jié),您可以在RTP拓?fù)銲ETF文檔中找到所有相關(guān)信息。
Mesh解決方案
? ? ? ?Mesh方法是最簡(jiǎn)單的解決方案。它在新的WebRTC服務(wù)提供商中很受歡迎,因?yàn)樗恍枰茉O(shè)服務(wù)器。該體系結(jié)構(gòu)基于從每一個(gè)發(fā)送者創(chuàng)建多個(gè)一對(duì)一的數(shù)據(jù)流到每一個(gè)接收者。
? ? ? ?即使看起來(lái)效率低下,實(shí)際上它也是非常有效的,并且提供了盡可能低的延遲,并為根據(jù)實(shí)際情況為每個(gè)接收者提供獨(dú)立的比特率。
? ? ? ?“唯一”問(wèn)題是該解決方案需要大量的上行鏈路帶寬來(lái)同時(shí)向所有目的地發(fā)送媒體流,而現(xiàn)有的瀏覽器實(shí)現(xiàn)需要大量的CPU功率來(lái)并行地對(duì)視頻進(jìn)行多次編碼。
Mixer解決方案
? ? ? ?Mixer是多人視頻會(huì)議的傳統(tǒng)解決方案,并且已經(jīng)使用了多年,取得了巨大成功。這個(gè)成功歸功于它在終端(endpoint)中需要最少的成本。 該體系結(jié)構(gòu)基于中心點(diǎn)與每個(gè)參與者保持單一的一對(duì)一流。然后,中央元件接收并混合每個(gè)傳入的音頻和視頻流,為每個(gè)參與者生成一個(gè)單獨(dú)的流。視頻會(huì)議行業(yè)中這些集中式元件的一個(gè)常見(jiàn)術(shù)語(yǔ)是多點(diǎn)控制單元(MCU)。實(shí)際上,使用MCU通常是指Mixer解決方案。
? ? ? ?Mixer是與老舊設(shè)備互操作性非常好的解決方案。它們還允許全比特率適應(yīng),因?yàn)镸ixer可以產(chǎn)生不同的輸出流,給每個(gè)接收者提供不同的質(zhì)量。Mixer解決方案的另一個(gè)優(yōu)勢(shì)是它可以在設(shè)備中利用硬件解碼,只要設(shè)備具有硬件解碼能力。
? ? ? ?主要的缺點(diǎn)是MCU的成本。另外,由于混合需要解碼和重新編碼,這會(huì)引入額外的延遲和質(zhì)量損失。最后,轉(zhuǎn)換和合成可能在理論上導(dǎo)致應(yīng)用程序UI的靈活性較低(盡管此問(wèn)題有解決方法)。
Router解決方案
? ? ? ?Router(或Relay)因H.264 SVC基礎(chǔ)架構(gòu)變得普及,并且這種架構(gòu)被大多數(shù)新的WebRTC平臺(tái)所使用,這些平臺(tái)在沒(méi)有任何老舊設(shè)備。該體系結(jié)構(gòu)基于中心點(diǎn)接收來(lái)自每個(gè)發(fā)送者的流,并向每個(gè)參與者發(fā)送流。這個(gè)中心點(diǎn)只能進(jìn)行數(shù)據(jù)包檢測(cè)和轉(zhuǎn)發(fā),而不會(huì)對(duì)流媒體進(jìn)行昂貴的編碼和解碼。常見(jiàn)術(shù)語(yǔ)是SFU。
? ? ? ?Router提供了一種便宜且可擴(kuò)展的多方解決方案,與傳統(tǒng)調(diào)Mixer解決方案相比,在保證視頻質(zhì)量的前提下具有更低的延遲。
? ? ? ?另一方面,這個(gè)方案的行業(yè)經(jīng)驗(yàn)較少,將流適配到不同的接收者變得棘手。我們需要在終端中支持生成多種不同的流,這些流隨后可以在路由器中被選擇性地轉(zhuǎn)發(fā)。
三種架構(gòu)的流量對(duì)比
我們?cè)撚媚欠N架構(gòu)?
? ? ? ?不幸的是,沒(méi)有簡(jiǎn)單的答案。事實(shí)上,一些商業(yè)解決方案包括對(duì)所有這些解決方案的支持,以優(yōu)化不同客戶的使用。但是,這里有一些一般性的經(jīng)驗(yàn)法則。
1.如果您僅提供音頻服務(wù),或者需要與傳統(tǒng)設(shè)備互操作,那么Mixer架構(gòu)可能最適合您。另外,如果基礎(chǔ)設(shè)施的成本不是問(wèn)題,并且參與者具有異構(gòu)連接,這可能是一個(gè)很好的解決方案。
2.假設(shè)你提供企業(yè)級(jí)服務(wù),且有較好的寬帶和高效的硬件(即一個(gè)企業(yè)內(nèi)部服務(wù)),并且參與者數(shù)量有限,那么您可以使用Mesh體系結(jié)構(gòu)獲得良好結(jié)果。
3.一般而言,如果您提供大規(guī)模服務(wù),則應(yīng)優(yōu)先考慮Router方案。歸根結(jié)底,Router解決方案最接近于將智能置于網(wǎng)絡(luò)邊界的Internet模式,以在構(gòu)建最終用戶應(yīng)用程序時(shí)實(shí)現(xiàn)更好的伸縮性和靈活性。
WebRTC中缺少什么?
? ? ? ?即使有商業(yè)和免費(fèi)的解決方案在WebRTC上提供多方服務(wù),仍然存在需要在基礎(chǔ)技術(shù)中解決的問(wèn)題,以實(shí)現(xiàn)更好的用戶體驗(yàn)。這些包括:
1.改進(jìn)了音頻處理和編碼,特別是聲學(xué)回聲消除和噪聲抑制算法。
2.更先進(jìn)和靈活的擁塞控制,允許開(kāi)發(fā)人員即時(shí)修改流的參數(shù),比如比特率,質(zhì)量或視頻分辨率。
3.simulcast和分層視頻編碼支持獨(dú)立地將原始視頻流適配到每個(gè)接收者,而無(wú)需昂貴的代碼轉(zhuǎn)換。
? ? ? ?總而言之,我們有能力開(kāi)始基于WebRTC技術(shù)為我們的客戶提供多方服務(wù)。隨著標(biāo)準(zhǔn)的發(fā)展,隨著更多API的提供,以及隨著更多瀏覽器中更好的實(shí)現(xiàn)的出現(xiàn),基于網(wǎng)絡(luò)的視頻會(huì)議的未來(lái)變得更加有前途。
原文鏈接:https://webrtchacks.com/webrtc-beyond-one-one/