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