文丨凡泰極客
如果你是一位工程師,想必聽過 WebRTC,就算沒有開發過;如果你是一位網際網路使用者,大機率使用過 WebRTC,雖然可能沒有意識到。在這個影片為王的時代,我們漫談一下這個技術的來龍去脈以及一些有趣的應用。
WebRTC 關卿底事?
文言「底」也表示疑問,是「何」、「什麼」的意思。如南唐中主李璟在調侃馮延巳時所寫「風乍起,吹皺一池春水,干卿底事?」
如果說 20 世紀人類的書寫工具是筆、通訊方式是郵局寄信,那麼 21 世紀初人類的書寫工具就變成鍵盤、通訊方式就是電子郵件/簡訊/即時通訊聊天,而從現在開始的可見未來,手機攝像頭/VR 裝置就是你的書寫記錄這個世界的工具、實時網路通訊就是你的通訊方式。
影片成了娛樂、學習、商務會議、社交、電商的載體,人們逐漸不再有耐心閱讀文字性的資訊,現在連購買一件自安裝的傢俱,它都附帶二維碼,使用者只要一掃即開啟安裝指南的影片,再也不用反覆研究紙質說明書裡那往往畫的非常蹩腳的安裝圖。
影片不僅是資訊的展現方式,它從一部部的 mov、jpeg4、wmv(你硬碟上熟悉而又陌生的檔案對不對?)變成一個個的播放器,再變成一個個的 App,然後又從這種單向的“錄製 上傳 下載 找播放器開啟 播放”,變成了“現場錄製 邊錄邊播 實時收看”,再變成影片與即時通訊工具、會議工具融合的雙向“錄製與播放”。
傳說中的“實況直播”終於發展到一個“平民化”的階段。WebRTC,全稱 Web Real-Time Communication,就是這麼一種基礎技術,它促進你用新的“筆”(智慧影片裝置,例如你的手機)以影像而非文字方式去記錄與溝通。
它的奧妙在兩部分,自然就是:Web + RTC!這不是顯而易見的廢話嗎?還真不是… 但我們先聊一下 RTC,實時網路通訊。
與 RTC 相比,WebRTC 僅僅是針對網頁實時通訊所建立的標準,其中也只提供了基礎的前端功能進行實現。我們並不能簡單地將 WebRTC 與 RTC 劃等號。
“感覺上很快”就是實時?
WebRTC 強調“實時通訊網路”。網路早已無處不在了,但是否“實時”呢?大部分情況下不是。
首先,當前網際網路上最重要最基本的 HTTP 協議並不是為“實時”應用設計的,當你訪問一個網站的時候,你發起請求,等候網站的伺服器把內容應答送回到你的 PC 或者手機裝置,雖然這個應答可以非常快,但本質上是“請求-等候-應答”,這個“等候”,往往是一個不易控制的時間變數。
- 電子郵件是不是“實時”的呢?顯然也不是,雖然相比傳統的郵遞快了十萬八千倍,但是它本質上是“儲存-轉發”(Store-and-Forward)的機制,是由網際網路上很多的郵件伺服器以接力的方式,在某個最優網路路徑上把電郵從某甲的裝置送到某乙的裝置,任何中間環節都可能延遲。
- 聊天工具是不是實時?它相比電子郵件而言,有更加“線上”的會話感 – 一個群裡聊天資訊來來回回、這邊發那邊看,好像很“實時”,但它的技術本質依然是“儲存-轉發”,訊息接收方不線上沒關係,只要“上線”(開啟 App)就能收到,也不需要馬上回復。
事實上,對快慢的感覺不能定義實時。網路的低延遲、高頻寬固然是實時性的一些保障,但不等同於實時。
用大白話來描述的話,實時影片的目標,是把正在某個地方A發生的人和事,以幾乎零延遲、不失真的方式“同步”到另外一個地方 B,讓 B 的人瞬間看到、聽到,並且反之亦然。人和事都是在不斷的變化中,影片需要以“流”的方式源源不斷的向遠端推送更新,A、B 兩地的人雖然隔著十萬八千里,但是他們之間的網路能把“影片流”瞬間同步,讓彼此感覺近在咫尺,這就是“實時”。
那麼現在我們的“實時通訊網路”,距離真正的實時還有多遠?
構建元宇宙?無限追求實時
上述問題的簡單答案是,有點遠。
我們對“實時”的追求是無限的,詳細一點的解釋,可以借最近熱炒的“元宇宙”作為例子。元宇宙,是一個“模擬”或者說“全真”的網際網路,它的特點之一,是利用極其強大的實時網路,把物理世界裡事物的無限細節資訊化並瞬間傳播給接收者,使其透過一些特殊裝置去復原這些資訊並最大程度感受到在原發地事物的原本樣子。
這些資訊能包括些什麼呢?例如有空間感的立體聲效(Spatial Audio),讓你在一個線上會議室裡能聽到講話的人在自己的什麼方位,讓你在一個虛擬社交沙龍里能聽到輕微的背景音樂、左邊一群人的閒言碎語、右邊吧檯上酒保的調酒聲;例如能足以讓遠端裝置渲染還原成逼真 3D 效果的人或物的特徵資料,大至街景建築小至毛髮與臉部表情,讓你在虛擬空間裡與其中的物品或人進行互動,像真的一樣; 假如有一天我們發明出能收集味道並資訊化並在遠端透過刺激大腦皮層還原味道的裝置,那麼這又是一種需要傳送的資料。一句話,我們希望把任何物理距離以外的東西,色香味俱全的“同步”到自己的大腦。
如果說我們現在的網際網路是 2D 的話(即你只能面對一個螢幕這樣的二維平面去互動感知),元宇宙就是下一代 3D 網際網路,你“沉浸”在其中,你被實時送達的資料包裹,你的眼耳鼻舌身意“六根”都在裡面。不要以為這是科幻,一些技術已經看的到摸得著,簡單者如 hubhub,複雜花哨者如 Google 的 Starline。
在 Matthew Ball 的“元宇宙入門”( Metaverse Primer)中,提到實時網路是讓這一代沉浸式網際網路成為可能的8種最核心技術之一。海量資料的極低延遲實時傳輸能力,目前技術上還是有點遙遠。
雖然元宇宙還在“炒作曲線”的不知道哪個點上,可是一些實實在在的商業應用場景確實已經可以基於實時的影片技術進行構建。除了大家熟悉的直播帶貨、娛樂互動,還有虛擬展會、實時教練培訓、遠端醫療(Telehealth)等等應用,相信任何線下的場景,只要技術允許,都會有產生線上模擬的一天。
去中心化的通訊方式?
WebRTC 的裡的“Web”部分,並非簡單無意義的泛指,而是特指 Web Browser(瀏覽器)。這個標準以及實現它的技術,目前均已內建在各主流瀏覽器中,理論上讓任何使用者透過任何 PC、Mac、iPhone、Android 甚至車載系統的瀏覽器,即可發起彼此之間的直接影片語音通訊。
也就是說,張三和李四,不管人在何方,理論上只要各自有一臺裝置執行一個支援 HTML5 標準的瀏覽器,即可以無需經過“中間商”(網際網路大平臺、電信運營商等等)的通訊服務或渠道而建立這兩個瀏覽器之間的直接連線,實現傳說中的“點對點”(Peer-to-Peer)影片通訊和檔案分享!如果還有王五、陳六、何七幾位呢?歡迎加入,組成一個完全無障礙的、無伺服器的、自組織的對等網路,每個人的瀏覽器都是這個網路的節點,共同進行視訊會議、檔案分享。
無中間商賺差價、無網際網路大平臺收集通訊各方的隱私資料,個人掌握自己的資訊保安,也不依賴任何第三方,是不是忽然有一種自由飛翔的感覺?去中心化、點對點、對等網路,讓我們回憶到網際網路美好的蠻荒時代 – BT、電驢、迅雷… the good old days…
可惜暫時來說,上述情形只是一種理想,因為網際網路的實際環境複雜,例如我們每個人的上網裝置實際上都是在某個小區寬頻、移動運營商網路、酒店 WiFi、公司區域網等等的後面,網際網路實際上是由無數這樣大大小小的區域性網路透過一系列的網路裝置、網路協議進行互聯互通的,鏈路上資訊的傳遞透過不同網路的裝置進行層層轉發和網路地址/埠的“翻譯”轉換,最終才到達某個個體裝置。
在深圳南山區科技園某公司的員工張某,如何讓其瀏覽器發現並連線北京朝陽區某小區的群眾李某的瀏覽器裝置地址,從而建立起點對點直連?沒有直接辦法。
現有的技術實現方案,依然是中心化的,即張某與李某,不得不透過一個第三方的服務來“發現”彼此的地址,這個環節叫做 Signaling(信令)。
“去中心化”臨門一腳,暫時沒有現成技術,比較可惜。
區塊鏈+ WebRTC 有沒有的搞?
有一些這方面的研究探索,待有志者進一步深入。
首先是關於技術本身的最佳化與擴充套件。例如有人提出利用 Kademlia(一種 DHT/分散式雜湊表的演算法,被以太坊、Storj 等區塊鏈用於組網)實現信令服務的去中心化。一篇 IEEE 的研究論文則探討了透過區塊鏈智慧合約去提高 WebRTC 的安全性。
其次在應用方面,有一種方案提出,在疫情以來遠端辦公比重日益增加的情況下,出於企業資訊保安、合規留痕、工作效率管控等等原因,需要對例如銷售、服務等各種發生在公司外部的遠端通訊活動進行記錄,依靠現有的基礎設施提供商的 CDR(Call Detail Record)難以確立單一可信來源、追蹤上下文,可以結合區塊鏈與智慧合約,對 WebRTC 的通訊記錄資料出塊,實現單一可信源複製、不可篡改以及分散式儲存等好處。
很多金融機構的服務,例如開戶或者購買理財產品等,需要遠端影片見證,也許是區塊鏈+WebRTC 的一個很好的應用場景。
WebRTC的未來與Google的算盤
講到未來,我們不得不先回顧一下這個技術的歷史。
2021 年 1 月 26 日,W3C 正式宣告 1.0 標準(“WebRTC 1.0:Real-Time Communication Between Browser”)。此前 WebRTC 經歷了整整 10 年的發展:2011-2014 是這個技術的探索期,大家的主要疑問是:我是否應該嘗試這個技術?2015-2019 是這個技術的成長期,隨著所有主流瀏覽器對 WebRTC 的支援,業界的問題變成:我該如何利用這個標準技術?有些什麼應用場景?2020 年開始迄今,是這個技術應用的差異化時期。
2020 年的新冠疫情,被認為對 WebRTC 技術產生直接促進性影響。視訊會議無處不在,Zoom 變成一個家喻戶曉的品牌(在國內市場自然是某些網際網路巨頭的相應品牌),可以說大眾對雲端視訊會議的認知與接受度得到史無前例的加強。
同樣是 W3C 的標準,WebRTC 有沒有機會像 HTTP 之於“古典網際網路”一樣,成為下一代網際網路(無論你稱它為“實時通訊網路”、“Web3.0”還是“元宇宙”)的基礎協議?回答這個問題,得了解一下 WebRTC 背後的真正“操盤手”。
操盤手是 Google – 它不僅推動 WebRTC 成為一個網際網路標準,也貢獻了大部分的底層開源技術。十年前 Google 幹這事的動機是什麼呢?大概有這麼幾個原因:
- 押注這十年的技術發展,讓影片編碼技術、影片質量、網路頻寬、運算資源都有重大發展,影片成為網上最最重要的應用載體;
- 很多企業當時的視訊會議還是企業內部的、設定使用繁複的、需要專用裝置的那種技術。隨著雲計算的發展,視訊會議會不會變成雲服務?很有可能;
- 影片應用需要專門的軟體工具(回憶一下十年前五花八門的影片播放器?),Google 不控制計算機作業系統,但是它的 Chrome 瀏覽器已經開始擊敗微軟和火狐,成為無處不在的存在。把一個影片技術內置於瀏覽器,給使用者帶來極大便利,影片內容與網頁內容隨時交織在一起,開啟即看,下載什麼影片播放器呢?
- 最重要一點來了,當年 Google 在視訊會議這個領域,毫無優勢可言,領先的技術平臺提供商並不是 Google。所以,開個源、攪個局,完全沒有壞處。
WebRTC 標準與技術,最終贏得了 Firefox、Opera、Apple Safari、Microsoft Edge 以及各種 Chrome 變種瀏覽器的支援,從這個角度看,是取得巨大的成功。但比較諷刺的是,Google 自己的產品中涉及影片的,似乎都沒有太取得商業上的成功。例如視訊會議方面,大家甚至都不太想起 Google 也有這方面的產品(而且質量不錯),反而 Google 的競爭者們不少都採用 WebRTC 卻取得競爭優勢。
當 WebRTC 成為公共標準後,Google自己貌似在開始與 WebRTC “脫鉤”,開始投資到另一個全新的技術棧:WebTransport + WebCodecs + WebAssembly。其中 WebTransport 主要基於 QUIC(HTTP/3的傳輸層協議),帶來更低的網路延遲,更適合影片類應用。WebCodecs 內置於瀏覽器,讓其有獨立的音影片編碼解碼能力。WebAssembly,一個已經發展了相當長時間、進入成熟期的開源技術,它不僅讓瀏覽器渲染執行 JavaScript 程式碼的效能獲得“原生”級別的提升,更重要的是它可能支援機器學習方面的結合。
如果 Google 作為 WebRTC 開源技術的主要推手,不再投資到其中,那麼 WebRTC 1.0 之後,除了修修補補的小版本,還有持續發展的未來嗎?我們基於 WebRTC 打造應用,是否得擔心一下?
WebRTC 成為下一代網際網路的實時應用基石,估計有點懸,因為確實有潛在的更優解在那裡。但是,對於應用開發者,未來幾年內,WebRTC可能就是我們的最優解,原因有三:
- 不要說 HTTP/3,到了今天網際網路的主體還是依賴古老過時的 HTTP/1.1,HTTP/2 還在緩慢的增長中。替換一個積累10年而成熟的標準不容易;
- 雖然 Apple 有它的 FaceTime、Zoom(以及國內外的影片服務巨頭們)有自己的封閉技術,未必在意 WebRTC,但是對於獨立開發者,一個標準的、開放的、互聯互通的、工業品質的開源技術,依然是我們最好的選擇;
- 標準與開源的好處就是,只要有企業能利用它做出殺手級應用、商業成功,就會有人去繼續支援維護與創新,接過 Google 的槍。例如會不會有人把 WebRTC 更徹底的去中心化?利用 QUIC 去最佳化 WebRTC 的低延遲?總是有人會去琢磨。
作為應用開發者,可以做的事情是應用場景的創意發掘與創新,是促進一個標準/技術繁榮有生命力的最佳保證。
殺手級WebRTC應用有哪些?
Alexa,亞馬遜的智慧音箱 Echo 裡的智慧助手,採用 WebRTC。
Facebook Messenger、Discord、Amazon Chime、Google Meet/Hangout/Duo,都是基於 WebRTC 的影片通訊工具、視訊會議應用。
Clubhouse,2021 年現象級的語音社交工具。
Chrome Remote Desktop,遠端桌面工具。對於一般商務人士例如市場、銷售等等來說,可能過於技術,難以駕馭。但這種工具為什麼沒有人深入研究借鑑一下,發展出實時遠端銷售培訓、實時遠端機器維修人員培訓、實時遠端醫療人員培訓這樣的東西呢?
最後必須特別推薦三個值得關注的 WebRTC 相關公司及其應用場景:
Peer 5,一個基於 WebRTC 的 eCDN(企業內容分發網路),對內容進行網路加速,充分利用到 WebRTC 內建在瀏覽器中的 P2P 能力。今年8月份被微軟收購。這是一個借力新標準、開源技術成就一家創業公司的成功故事。
Hopin,一家英國的獨角獸公司,採用 WebRTC 打造“虛擬活動平臺”,成立兩年成功融資 5 億 7 千萬美元、收購 4 家公司。
Stadia,這是 Google 嘗試進軍遊戲行業的一大嘗試,能否成功不去討論。其有趣的地方是開啟 Cloud Gaming 這一領域,也可以稱之為“Gaming As A Service”(遊戲即服務)或者“On-Demand Gaming”。怎麼理解它呢,一直以來我們打 Xbox、任天堂的遊戲,都是需要買一個遊戲機,打不同的遊戲就放進去不同的遊戲光碟。 Cloud Gaming,就是你不需要本地的光碟了,遊戲在雲端執行,然後透過流媒體的方式傳輸到你的螢幕上,就像你在電視上點播電影一樣,但你用遊戲手柄可以與“電影”互動。
你怎麼看待 WebRtc 在未來的發展?歡迎與我們交流。