
此消息一出便引得無(wú)數(shù) WebRTC 開發(fā)者為之興奮,更表示其將改變當(dāng)前的 P2P 視頻通話技術(shù)格局。這是為什么呢?在此,我們需要先簡(jiǎn)單地了解一下 WebRTC,其全稱為 Web Real-Time Communication(網(wǎng)絡(luò)實(shí)時(shí)通信),是一項(xiàng)能夠讓瀏覽器支持實(shí)時(shí)語(yǔ)音會(huì)話或視頻對(duì)話的技術(shù)。這一技術(shù)前身為 GIPS,本是由 Global IP Solutions 公司研發(fā),2010 年,Google 以 6820 萬(wàn)美元的價(jià)格將該公司收購(gòu)并將 GIPS 更名為 WebRTC,次年 5 月正式將其開源。
彼時(shí),我們所能想到的只是因?yàn)?Google 的推動(dòng),這樣一項(xiàng)能夠在瀏覽器內(nèi)部進(jìn)行實(shí)時(shí)音頻和視頻通信的技術(shù)讓 Web 中的實(shí)時(shí)通訊成為可能。但同時(shí),也有諸多開發(fā)者在質(zhì)疑 WebRTC 是否會(huì)曇花一現(xiàn),畢竟一直以來(lái),雖然 Chrome、Firefox、Opera 等市面上主流的瀏覽器均已加入 WebRTC 大本營(yíng),但蘋果的 Safari 和微軟的 IE 卻都不支持。
如今,Safari 即將在最新版本中集成 WebRTC,其對(duì)于整個(gè)實(shí)時(shí)通信領(lǐng)域而言,究竟意味著什么?對(duì)于 WebRTC 開發(fā)者來(lái)說(shuō),又將有著怎樣的改變?我們帶著種種疑問(wèn),請(qǐng)教了網(wǎng)絡(luò)實(shí)時(shí)通信領(lǐng)域的資深專家 —— 聲網(wǎng) Agora.io 創(chuàng)始人兼 CEO 趙斌,從 WebRTC 的發(fā)展歷程談起,詳細(xì)剖析 WebKit 終于支持 WebRTC 將帶來(lái)怎樣的變化。
追本溯源:為解決在瀏覽器上進(jìn)行視頻通話而生的 WebRTC
在 2011 年以前,瀏覽器之間要想實(shí)現(xiàn)實(shí)時(shí)通信,需要私有技術(shù),其中大部分都是通過(guò)插件和客戶端來(lái)安裝使用。對(duì)于許多用戶而言,插件的下載、安裝和更新是一個(gè)復(fù)雜、繁瑣和容易出錯(cuò)的操作。而對(duì)于開發(fā)人員來(lái)說(shuō),插件的調(diào)試、測(cè)試、部署、錯(cuò)誤修復(fù)和維護(hù)同樣困難重重,且不提還涉及到一些受版權(quán)保護(hù)的技術(shù),整合相當(dāng)復(fù)雜。再者,很多時(shí)候,服務(wù)提供商很難說(shuō)服用戶去安裝插件。
但這一兩頭吃力還不討好的局面就這樣被 Google 將 WebRTC 項(xiàng)目開源所打破。2011 年,WebRTC 基于 BSD 協(xié)議開源,同年,W3C 啟動(dòng) WebRTC 計(jì)劃,讓 WebRTC 成為了 HTML5 標(biāo)準(zhǔn)的一部分(目前,該規(guī)范還在開發(fā)中)。
由此,瀏覽器廠商將 WebRTC 內(nèi)建在瀏覽器中,使得 Web 應(yīng)用研發(fā)人員能夠通過(guò) HTML 標(biāo)簽和 JavaScript API 即可實(shí)現(xiàn) Web 音視頻通信功能。在 WebRTC 的官網(wǎng)上,Google 如此表述道:
- 互聯(lián)網(wǎng)成功的關(guān)鍵因素之一,便是一些如 HTML、HTTP 和 TCP/IP 等的核心技術(shù)是開放和免費(fèi)實(shí)現(xiàn)的。目前,在瀏覽器通信領(lǐng)域還沒(méi)有免費(fèi)、高質(zhì)量、完整的解決方案,而 WebRTC 正是這樣的技術(shù)。
- 該技術(shù)包含了使用 STUN、ICE、TURN、RTP-over-TCP 的關(guān)鍵 NAT 和防火墻穿透技術(shù),并支持代理。通過(guò)瀏覽器,WebRTC 把通訊雙方的信令狀態(tài)直接映射到 PeerConnection 里面來(lái)抽象信令處理,這樣,開發(fā)人員按不同的應(yīng)用場(chǎng)景選擇不同的會(huì)話協(xié)議,比如 SIP、XMPP/Jingle 等。截至目前,該技術(shù)的使用已經(jīng)超過(guò)了 8 年,集成了最佳的音頻、視頻引擎,并被部署到數(shù)以百萬(wàn)的終端中,同時(shí)這些技術(shù) Google 不收取任何費(fèi)用。
- 從最初的為了解決瀏覽器上視頻通話而誕生,WebRTC 已經(jīng)發(fā)展到可以實(shí)現(xiàn)在瀏覽器之間進(jìn)行任意數(shù)據(jù)的通信。其中,Chrome、Firefox、Opera 對(duì)于 WebRTC 的支持已較為成熟,而微軟于 2014 年提出了 ORTC(對(duì)象 RTC,也有人稱之為 WebRTC 1.1),希望在對(duì) Google 的 WebRTC 提案稍作修改的基礎(chǔ)上,也提供支持。目前,最新版本的 Microsoft Edge 已經(jīng)支持 ORTC。
而對(duì)于蘋果官方終于宣布“WebRTC 將在 Safari 11 上支持”,趙斌如此評(píng)價(jià)道:“目前,WebRTC 已經(jīng)有了 1.0 版本,暫時(shí)還是草案。但是我們可以看到的是,WebRTC 在網(wǎng)絡(luò)抗丟包處理、視頻引擎(比如 H.264 Codec 支持成熟度)等方面,還是需要加強(qiáng)的。1.0 之后的 1.1 版本,考慮到了和 ORTC 的結(jié)合,讓 WebRTC 可以在微軟瀏覽器上實(shí)現(xiàn),這是 Google 和微軟同時(shí)推動(dòng)的階段性進(jìn)展。實(shí)際上,Google 的 WebRTC 從一開始的計(jì)劃就是能支持所有的主流瀏覽器。之前最大的障礙是微軟瀏覽器和蘋果瀏覽器,但是通過(guò) Google 的推動(dòng),這些實(shí)際上都在發(fā)生變化。而 Safari 在 iOS 11 中將支持 WebRTC,既是行業(yè)里最后一個(gè)重要的瀏覽器加入這一潮流,也是這一進(jìn)程的重大勝利。這在 WebRTC 的發(fā)展上是里程碑性的事件,將會(huì)極大地推動(dòng) RTC 技術(shù)在各種應(yīng)用網(wǎng)站上的普及。當(dāng)然,目前蘋果對(duì) WebRTC 的支持還比較粗糙,需要更多的時(shí)間成熟,并解決互通上的更多問(wèn)題。微軟則還需要在標(biāo)準(zhǔn)的一致性上參與行業(yè)的討論,縮小和拉近在互通性方面的差距。”
那么,Safari 終于實(shí)現(xiàn)對(duì)于 WebRTC 的支持,究竟意味著什么?
一直以來(lái),WebRTC 開發(fā)者總被一個(gè)無(wú)法逃避的陰影所籠罩,那就是來(lái)自用戶的“什么時(shí)候微軟和蘋果的瀏覽器支持呢?”的疑問(wèn),每每此時(shí),卻只能給出讓用戶使用 Chrome 和 Firefox 的解決方案。而在移動(dòng)端,事情變得更加復(fù)雜,因?yàn)樵?iOS 上,使用原生是唯一的辦法,也由此增加了 Swift/Objective-C 的開發(fā)成本,盡管 React Native 能夠構(gòu)建支持 WebRTC 的 Android 和 iOS 應(yīng)用讓這一狀態(tài)有所改善,但卻無(wú)法從根本上解決問(wèn)題。
而隨著支持 WebRTC 的 iOS 版 Safari 的到來(lái),意味著開發(fā)者們可以提供一個(gè)在 Web 端、移動(dòng)端均可運(yùn)行的響應(yīng)式網(wǎng)站來(lái)實(shí)現(xiàn) WebRTC 通話。對(duì)于開發(fā)者個(gè)人而言,也無(wú)需為了完成項(xiàng)目而絞盡腦汁地成為 Objective-C、Swift 或 React Native 方面的專家,通過(guò) JavaScript 即可實(shí)現(xiàn)這樣一個(gè)精細(xì)復(fù)雜的網(wǎng)絡(luò)電話應(yīng)用,由此開發(fā)成本將得到大幅降低。
在談到 WebRTC 移動(dòng)端實(shí)現(xiàn)時(shí),趙斌表示:“在 Safari 支持 WebRTC 后,過(guò)去只能在諸如 Chrome 瀏覽器之間實(shí)現(xiàn)的音視頻通話,現(xiàn)在在 Safari 以及 Chrome 與 Safari 之間實(shí)現(xiàn)了,其影響一定是積極的。可以預(yù)見,很多網(wǎng)站及開發(fā)者將會(huì)更加認(rèn)真地考慮將這類功能添加至網(wǎng)站及應(yīng)用中。”
仍有缺憾:WebRTC 應(yīng)用已遍地開花,但為何大規(guī)模單純使用的成功產(chǎn)品卻少之又少?
盡管 WebRTC 應(yīng)用已經(jīng)如此廣泛,但其也并非完美,比如在穩(wěn)定性、P2P 連接率、呼叫成功率、網(wǎng)絡(luò)抗丟包性能等諸多方面,都還有很大的提升空間。所以到目前為止,大規(guī)模單純使用 WebRTC 成功的產(chǎn)品還是鳳毛麟角,且?guī)缀醵际窃诰W(wǎng)絡(luò)和設(shè)備性能非常成熟的美國(guó),比如 Facebook Messenger、Google Hangouts。
且 WebRTC 是基于瀏覽器上的技術(shù),大部分都是在瀏覽器中應(yīng)用。而使用 WebRTC 在移動(dòng)端上進(jìn)行開發(fā),差別還是很大。雖然可以實(shí)現(xiàn),但門檻會(huì)很高,難度也會(huì)很大。對(duì)絕大多數(shù)開發(fā)者來(lái)說(shuō),要用 WebRTC 在移動(dòng)端實(shí)現(xiàn)良好體驗(yàn),不是一件容易的事情,會(huì)遇到非常多的坑。在進(jìn)行 WebRTC 開發(fā)之前,開發(fā)人員及其團(tuán)隊(duì)需要根據(jù)自身的情況,來(lái)決定是自主開發(fā)還是使用第三方 SDK。
對(duì)此,趙斌與我們分享了他的經(jīng)驗(yàn):“實(shí)時(shí)通信是一項(xiàng)實(shí)現(xiàn)功能容易,但做好很難的技術(shù)。我曾在 WebEx 和 YY 工作將近 20 年,非常清楚 RTC 技術(shù)的坑。也知道對(duì)于一個(gè)開發(fā)者而言,要自己在 App 和瀏覽器中實(shí)現(xiàn)實(shí)時(shí)音視頻通話,是非常麻煩且累人的事情。很多開發(fā)者最容易掉進(jìn)的坑,就是忘了如果想要用好實(shí)時(shí)通信技術(shù),歸根結(jié)底還是在于使用過(guò)程中的質(zhì)量保障,而非研發(fā)時(shí)寫的那些功能代碼。”
也正因如此,趙斌和他的團(tuán)隊(duì)對(duì) WebRTC 在質(zhì)量保障方面進(jìn)行了擴(kuò)展,比如為了解決 WebRTC 在弱網(wǎng)絡(luò)環(huán)境下抗丟包、通話連通率等問(wèn)題,在全球部署了虛擬通信網(wǎng) SD-RTN?(Software Defined Real-time Network),有近 100 個(gè)數(shù)據(jù)中心,同時(shí),為開發(fā)者提供一個(gè)極簡(jiǎn) SDK,幫助其在任何 App、網(wǎng)站上,都能實(shí)現(xiàn)高質(zhì)量的音視頻通話、全互動(dòng)直播。據(jù)趙斌介紹,目前這款 SDK 已經(jīng)被嵌入到了超過(guò) 5 億的終端設(shè)備上,僅僅花了1年左右的時(shí)間,全球范圍內(nèi)對(duì)于實(shí)時(shí)通信質(zhì)量保障的強(qiáng)烈需求可見一斑。
總結(jié):實(shí)時(shí)通信技術(shù)無(wú)所不及的應(yīng)用場(chǎng)景
WebRTC 一直是推動(dòng) RTC 實(shí)時(shí)通信技術(shù)發(fā)展的最主要力量,讓實(shí)時(shí)通信技術(shù)能夠在互聯(lián)網(wǎng)很多行業(yè)里得到廣泛應(yīng)用。而近兩年來(lái),我們也看到了實(shí)時(shí)通信技術(shù)在很多領(lǐng)域正在驅(qū)動(dòng)非常多的創(chuàng)新應(yīng)用場(chǎng)景,比如去年大熱的互動(dòng)直播,主播與觀眾隨時(shí)連麥互動(dòng)、不同房間的主播連麥聊天等,以及當(dāng)下正在流行的狼人殺,包括語(yǔ)音、視頻甚至是輪麥視頻狼人殺,這些場(chǎng)景都是基于 RTC 創(chuàng)造出來(lái)的。另外,在 AR/VR 和 AI 等新技術(shù)領(lǐng)域,也有諸多結(jié)合,如視頻通話時(shí)的動(dòng)態(tài)濾鏡貼紙、戴 VR 眼鏡和虛擬世界里的朋友聊天等等。當(dāng)然,對(duì)于傳統(tǒng)行業(yè),比如企業(yè)協(xié)作、金融、客服等領(lǐng)域,都有可能借助 RTC 技術(shù)打破地域界限,讓更多人可以做居家客服、居家辦公 SOHO 等。
“我們認(rèn)為,隨著 WebRTC 被幾大瀏覽器統(tǒng)一支持,應(yīng)用的成長(zhǎng)和發(fā)展是必然的。未來(lái),無(wú)論在怎樣的場(chǎng)景下,實(shí)時(shí)通信都會(huì)成為人們的一個(gè)默認(rèn)選擇,無(wú)限縮短人與人之間的距離。而用戶會(huì)越來(lái)越多地了解和熟悉這種使用模式,開發(fā)者也會(huì)越來(lái)越多地理解其中的門檻,以及質(zhì)量保障在實(shí)時(shí)通信領(lǐng)域的價(jià)值。”最后,趙斌如此總結(jié)道。