廣泛提供的高質(zhì)量視頻會(huì)議是互聯(lián)網(wǎng)真正成功之一。當(dāng)然,視頻會(huì)議的概念由來已久(可以去看看2001年Heywood Floyd用Bell videophone給家人打視頻電話的那一幕),但直到最近,它還需要專門的設(shè)備或者至少需要下載專門的軟件。簡單地說,WebRTC就是在Web瀏覽器中進(jìn)行視頻會(huì)議(VC),無需下載:你只需訪問一個(gè)網(wǎng)站并進(jìn)行通話。大多數(shù)主要的VC服務(wù)都有WebRTC版本:包括Google Meet、Cisco WebEx、Microsoft Teams,以及一大堆小公司。
它是一個(gè)工具箱,而不是一部手機(jī)
WebRTC并不是一個(gè)完整的視頻會(huì)議系統(tǒng);它是一套內(nèi)置在瀏覽器中的工具,它可以解決構(gòu)建VC系統(tǒng)的許多困難,讓你不必再去做。這些工具包括:
- 從電腦的麥克風(fēng)和攝像頭捕捉音頻和視頻。這也包括所謂的聲學(xué)回聲消除:即使人們不戴耳機(jī),也能消除回聲(希望如此)。
- 允許兩個(gè)端點(diǎn)協(xié)商它們的能力(例如“我想用AV1編解碼器發(fā)送和接收1080p的視頻”),并達(dá)成一組共同的參數(shù)。
- 在你和通話中的其他人之間建立安全連接。這包括通過網(wǎng)絡(luò)上的任何NAT或防火墻獲取數(shù)據(jù)。
- 將音頻和視頻壓縮后傳輸給對(duì)方,然后在收到后重組。此外還需要處理部分?jǐn)?shù)據(jù)丟失的情況,在這種情況下,你要避免出現(xiàn)影響定格或聽到音頻故障。
- 這個(gè)功能被嵌入到所謂的應(yīng)用程序編程接口(API)中:程序員向?yàn)g覽器提供一組命令,讓它建立視頻呼叫。這樣做的結(jié)果是,可以用很少的幾行代碼寫出一個(gè)非;镜腣C系統(tǒng)。構(gòu)建一個(gè)生產(chǎn)系統(tǒng)是比較麻煩的,但是有了WebRTC,瀏覽器為你完成了構(gòu)建客戶端的大部分工作。
標(biāo)準(zhǔn)化
重要的是,這些功能都是完全標(biāo)準(zhǔn)化的:API本身是由World Wide Web Consortium(W3C)發(fā)布的,網(wǎng)絡(luò)協(xié)議(加密、壓縮、NAT遍歷等)是由the Internet Engineering Task Force(IETF)標(biāo)準(zhǔn)化的。其結(jié)果是一大堆規(guī)范,包括API規(guī)范、協(xié)商發(fā)送或接收什么媒體的協(xié)議,以及發(fā)送點(diǎn)對(duì)點(diǎn)數(shù)據(jù)的機(jī)制?偠灾@代表了許多人在十年間所做的大量工作,最終產(chǎn)生了數(shù)百頁的規(guī)范。
其結(jié)果是,可以在瀏覽器中創(chuàng)建一個(gè)適用于所有人的VC系統(tǒng),而不需要安裝任何軟件。
諷刺的是,標(biāo)準(zhǔn)的實(shí)際發(fā)布有點(diǎn)虎頭鼠尾:每個(gè)主流瀏覽器都已經(jīng)發(fā)布WebRTC多年,并且正如我上面提到的,有大量的WebRTC VC系統(tǒng)。這是一件好事:廣泛的部署是獲得信心的唯一途徑,即技術(shù)確實(shí)像預(yù)期的那樣工作,文檔足夠清晰,可以從中實(shí)現(xiàn)。這些標(biāo)準(zhǔn)反映的是技術(shù)界的集體判斷,即我們有一個(gè)正常有效的系統(tǒng),我們不會(huì)改變基本的部分。這也意味著,對(duì)于實(shí)施非標(biāo)準(zhǔn)機(jī)制的VC供應(yīng)商來說,是時(shí)候按照標(biāo)準(zhǔn)的要求進(jìn)行更新了。
你為什么要關(guān)心這些
這時(shí)你可能會(huì)想:"好吧,你們都做了很多工作,但這又有什么關(guān)系呢 我不能直接下載Zoom嗎 WebRTC之所以大有來頭,有以下幾個(gè)重要原因。
安全性
可能最重要的原因是安全性。因?yàn)閃ebRTC完全在瀏覽器中運(yùn)行,這意味著你不需要擔(dān)心VC提供商想讓你下載的軟件中的安全問題。舉個(gè)例子,去年Zoom有許多引人注目的安全漏洞,例如,允許網(wǎng)站在未經(jīng)允許的情況下將你添加到調(diào)用,或者安裝所謂的遠(yuǎn)程代碼執(zhí)行攻擊,允許攻擊者在你的計(jì)算機(jī)上運(yùn)行他們的代碼。相比之下,因?yàn)閃ebRTC不需要下載,所以你不會(huì)暴露在供應(yīng)商客戶端可能存在的任何漏洞面前。當(dāng)然,瀏覽器并沒有一個(gè)完美的安全記錄,但是每個(gè)主要的瀏覽器都在安全技術(shù)上投入了大量的資金,比如sandboxing。此外,你已經(jīng)在運(yùn)行瀏覽器,因此每運(yùn)行一個(gè)額外的應(yīng)用程序都會(huì)增加安全風(fēng)險(xiǎn)。為此,Kaspersky建議運(yùn)行Zoom Web客戶端,即使體驗(yàn)比應(yīng)用程序糟糕得多。
基于WebRTC的會(huì)議的第二個(gè)安全優(yōu)勢(shì)是瀏覽器控制了對(duì)攝像頭和麥克風(fēng)的訪問。這意味著你可以很容易地阻止站點(diǎn)使用它們,以及確定它們何時(shí)使用。例如,在讓站點(diǎn)使用攝像頭和麥克風(fēng)之前,F(xiàn)irefox會(huì)提示你,然后在URL欄中顯示它們運(yùn)行時(shí)的內(nèi)容。
WebRTC在傳輸過程中一直都是加密的,不需要VC系統(tǒng)做其他的事,所以你大多不用問供應(yīng)商的加密工作做得好不好。這是Mozilla在WebRTC中參與最多的部分之一,符合Mozilla宣言第4條原則(個(gè)人在互聯(lián)網(wǎng)上的安全和隱私是基本的,不能被視為可選的)。更令人興奮的是,我們開始看到在MLS和sframe上為WebRTC構(gòu)建的內(nèi)置端到端加密會(huì)議。這將有助于解決一些原生客戶端沒有提供的一個(gè)主要安全功能:防止服務(wù)監(jiān)聽你的通話。很高興看到這方面的進(jìn)展。
良好的兼容性
因?yàn)榛?WebRTC 的視頻呼叫應(yīng)用程序可以在標(biāo)準(zhǔn)的 Web 瀏覽器上工作,所以它們可以顯著提高兼容性。對(duì)于用戶來說,這意味著他們無需安裝任何東西就可以加入一個(gè)呼叫,這讓生活變得容易得多了。我參加過很多電話會(huì)議,有人無法加入——通常是因?yàn)樗麄兊墓臼褂昧瞬煌腣C system——因?yàn)樗麄儧]有下載正確的軟件,而現(xiàn)在這種情況已經(jīng)少了很多,因?yàn)樗恍枧c瀏覽器配合使用。在對(duì)有軟件安裝限制的企業(yè)中,這可能是一個(gè)更大的問題。
對(duì)于那些想要支持一個(gè)新的 VC 服務(wù)的人來說,WebRTC 意味著不需要編寫一個(gè)新的客戶端軟件并讓人們下載。這使得進(jìn)入市場(chǎng)變得更加容易,而不必?fù)?dān)心用戶被鎖定在一個(gè) VC 系統(tǒng)中而無法使用你的系統(tǒng)。
這并不意味著你不能構(gòu)建自己的客戶端,許多流行的系統(tǒng),如WebEx和Meet都有可下載的端點(diǎn)(或?qū)τ赪ebEx來說,可以購買硬件設(shè)備)。但這意味著你不必這么做,如果你做得好,瀏覽器用戶將能夠與你的自定義終端對(duì)話,從而不需要太投入為普通用戶提供了一種簡單的方式來嘗試你的服務(wù)。
增強(qiáng)網(wǎng)絡(luò)
因?yàn)閃ebRTC是Web的一部分,而不是單獨(dú)的應(yīng)用程序,這意味著它不僅可以用于會(huì)議應(yīng)用程序,還可以增強(qiáng)Web本身。你想在游戲中添加音頻流 在網(wǎng)絡(luò)研討會(huì)上分享你的屏幕 從你的相機(jī)上傳視頻 沒問題,使用WebRTC就可以了。
WebRTC令人興奮的一點(diǎn)是,除了視頻通話之外,還有很多Web應(yīng)用程序可以使用WebRTC。最有趣的可能是WebRTC“Data Channels”的使用,它允許一對(duì)客戶端在它們之間建立一個(gè)連接,它們可以使用這個(gè)連接直接交換數(shù)據(jù)。這有許多有趣的應(yīng)用程序,包括游戲、文件傳輸,甚至瀏覽器中的BitTorrent。現(xiàn)在還為時(shí)過早,但我認(rèn)為未來我們會(huì)看到很多Data Channels。
更大的圖像
WebRTC 本身就是互聯(lián)網(wǎng)向前邁出的一大步:如果你在20年前告訴人們,他們將從他們的瀏覽器做視頻通話,他們會(huì)嘲笑你,我不得不承認(rèn),最初我也持懷疑態(tài)度,但我?guī)缀趺刻煸诠ぷ髦卸歼@么做。但更重要的是,這是一個(gè)很好的例子,說明了網(wǎng)絡(luò)的力量可以讓人們的生活變得更好,也說明了當(dāng)我們共同努力時(shí),我們可以做些什么。
技術(shù)要點(diǎn):對(duì)Firefox用戶來說,最大的問題可能是人們實(shí)現(xiàn)了一個(gè)特定于chrome的機(jī)制來處理多媒體流,這個(gè)機(jī)制被稱為“Plan B”。IETF最終采用了一種叫做““Unified Plan”的東西,Chrome也支持它(就像Google Meet一樣),但仍然有一些服務(wù),如Slack和Facebook Video Calling,它們只采用Plan B,這意味著它們不能與實(shí)現(xiàn)了統(tǒng)一計(jì)劃的Firefox正常工作。
Zoom Web客戶端是一個(gè)有趣的例子,因?yàn)樗挥胁糠諻ebRTC。與(比如說) Google Meet不同,Zoom Web使用WebRTC采集音頻和視頻并在網(wǎng)絡(luò)上傳輸媒體,但在本地使用WebAssembly完成所有音頻和視頻。這證明了WebAssembly的強(qiáng)大功能,但如果將Zoom Web與Meet或Jitsi等其他客戶端進(jìn)行正面比較,就會(huì)發(fā)現(xiàn)使用瀏覽器內(nèi)置的WebRTC API的優(yōu)勢(shì)。
谷歌已經(jīng)開放了他們的WebRTC協(xié)議棧,這使得你更容易編寫自己的可下載客戶端,包括一個(gè)將與瀏覽器互操作的客戶端。
原文鏈接 / https://blog.mozilla.org/blog/2021/02/04/what-webrtc-means-for-you/