WebRTC诞生记
今年1月份, W3C和IETF正式宣布, WebRTC現(xiàn)已成為官方標(biāo)準(zhǔn),這意味著它可以將音頻和視頻通信帶到 Web 的任何地方,實(shí)現(xiàn)真正意義上的全球互聯(lián)。
?
2020年的疫情使數(shù)百萬人改變了他們的日常生活和工作方式,為了減少身體接觸,越來越多的人使用音視頻實(shí)時(shí)通信(如直播互動(dòng)、在線教育、視頻會(huì)議,在線問診等),而這些不同應(yīng)用場(chǎng)景背后的核心技術(shù)就是WebRTC,一個(gè)通過簡(jiǎn)單的API為瀏覽器和移動(dòng)App提供實(shí)時(shí)通信功能的免費(fèi)開源項(xiàng)目。
?
距離谷歌正式開源WebRTC實(shí)時(shí)通信項(xiàng)目,已經(jīng)有10年時(shí)間,這10年中,WebRTC的重要性日益凸顯,應(yīng)用場(chǎng)景也越來越廣泛。那么10年以前呢?WebRTC是怎樣開發(fā)出來的?開發(fā)過程中遇到了哪些挑戰(zhàn)?背后又有哪些幕后英雄?
?
接下來讓曾參與過WebRTC開發(fā)工作,目前為谷歌產(chǎn)品管理總監(jiān)的Serge Lachapelle 來為我們講述WebRTC的誕生過程。
Serge Lachapelle,谷歌產(chǎn)品管理總監(jiān),Marratech聯(lián)合創(chuàng)始人
從事WebRTC開發(fā)工作的原因
?
從大學(xué)開始,我就對(duì)通信軟件開發(fā)非常感興趣。90年代,開始出現(xiàn)nv(Network Video,早期視頻會(huì)議)這樣的技術(shù),但是卻很難使用。所以我開發(fā)了一個(gè)項(xiàng)目,可以讓人們從瀏覽器上直接加入視頻通話,我還把它移植到了Windows上。
?
我把這個(gè)項(xiàng)目帶到了Marratech(一家由我和其他人一起創(chuàng)立的公司)。我和那里的同事一起為群組視頻會(huì)議開發(fā)軟件。那個(gè)時(shí)候的技術(shù)環(huán)境和現(xiàn)在大不一樣,視頻方面的前沿技術(shù)主要基于組播網(wǎng)絡(luò)。在一次通話中,用戶可以通過網(wǎng)絡(luò)將視頻包發(fā)送給所有人,這同時(shí)也意味著我們的服務(wù)器會(huì)非常簡(jiǎn)單。但這里有一個(gè)很大的問題,我們需要為視頻包設(shè)計(jì)可以容納它的網(wǎng)絡(luò)。所以我們后來就棄用了這種方法,而采用了包轉(zhuǎn)發(fā)的模式,也就是后來被人們熟知的SFU。
?
2007年,我的公司Marratech被谷歌收購(gòu),我在谷歌繼續(xù)從事視頻通信的相關(guān)工作,而這些工作對(duì)日后的WebRTC產(chǎn)生了一定影響。
第一個(gè)谷歌項(xiàng)目
?
當(dāng)時(shí)的團(tuán)隊(duì)(即未來的WebRTC團(tuán)隊(duì))做的第一個(gè)項(xiàng)目就是Gmail Voice和Video Chat。將音頻和視頻加入到瀏覽器中絕非是一件容易的事情。我們需要從不同公司獲得不同的專業(yè)組件,而這一切都要獲得對(duì)方公司的許可,如來自GIPS的音頻,Vidyo的視頻,libjingle的網(wǎng)絡(luò)。接下來就是奇跡的發(fā)生:把它們組裝到一起!
?
每個(gè)子系統(tǒng)都有一個(gè)完全不同的API,所以你要去解決不同的問題。在這個(gè)過程中,你要用到多種領(lǐng)域的知識(shí),如網(wǎng)絡(luò)、密碼學(xué)、媒體等等。承擔(dān)這項(xiàng)工作的是 Justin Uberti ,他將所有的這些組件組裝到一起,做出了一件非常有用的產(chǎn)品。
?Justin Uberti,WebRTC和Google Duo創(chuàng)造者之一,前段時(shí)間剛剛離開了工作近15年的谷歌,目前為Clubhouse流媒體技術(shù)負(fù)責(zé)人
瀏覽器中的實(shí)時(shí)渲染也是一個(gè)大難題。我們不得不用到NPAPI(Netscape Plugin API,網(wǎng)景插件接口),并下了一番苦工才讓它實(shí)現(xiàn)。整個(gè)過程雖然艱難,但卻對(duì)日后的WebRTC影響深遠(yuǎn)。
Chrome?
同一時(shí)期,Chrome項(xiàng)目也在谷歌內(nèi)部開啟。當(dāng)時(shí)大家都非常激動(dòng),因?yàn)檫@個(gè)項(xiàng)目將會(huì)實(shí)現(xiàn)很多重大的目標(biāo)。當(dāng)時(shí)大家經(jīng)常討論的話題還有WebGL、離線Web技術(shù)、數(shù)據(jù)庫(kù)性能,游戲的低延時(shí)輸入等等。
?
放棄使用NPAPI是當(dāng)時(shí)做的很重要的一件事。NPAPI雖然很強(qiáng)大,但卻帶來了很多安全問題。Chrome中使用了沙盒設(shè)計(jì)來確保用戶數(shù)據(jù)安全。不同進(jìn)程中,存在很多有安全隱患的操作,在這種設(shè)計(jì)下,即使出現(xiàn)問題,攻擊者也無法獲取用戶數(shù)據(jù)。
WebRTC誕生了!
在我看來,促成WebRTC誕生的因素有好幾個(gè),正是在它們的一起作用下,才有了今天的WebRTC。
WebRTC的開發(fā)難度不應(yīng)如此之大。不同的開發(fā)人員去重新實(shí)現(xiàn)同一個(gè)東西,導(dǎo)致浪費(fèi)了太多的時(shí)間和精力。我們應(yīng)該一次性解決這些麻煩的集成問題,然后專注于其他工作。
?
人與人之間的交流應(yīng)該是開放且不受阻礙的。我的實(shí)時(shí)語(yǔ)音和圖像為什么不能像文本和 HTML 那樣開放出來?
最需要解決的是安全問題。對(duì)于用戶來說,使用NPAPI存在安全隱患,并不是最佳選擇。這也使得默認(rèn)是安全的網(wǎng)絡(luò)協(xié)議應(yīng)運(yùn)而生。
為了實(shí)現(xiàn)WebRTC,Google收購(gòu)并開源了我們之前用到的組件,比如On2的視頻技術(shù),GIPS的RTC技術(shù)(我曾負(fù)責(zé)GIPS的收購(gòu))。我們需要將這些組件組合到一起,使它可以在瀏覽器內(nèi)、外都能易于使用。
標(biāo)準(zhǔn)化工作
標(biāo)準(zhǔn)化WebRTC是我們一直都想做的事情,但我和團(tuán)隊(duì)成員之前都沒有做過這方面的工作。非常幸運(yùn)的是,Harald Alvestrand在谷歌!他曾經(jīng)在IETF工作過,所以就由他接手了WebRTC的標(biāo)準(zhǔn)化工作。
Harald Alvestrand,計(jì)算機(jī)科學(xué)家,目前任職于谷歌,自1991年以來,他一直通過IETF積極參與互聯(lián)網(wǎng)標(biāo)準(zhǔn)化工作
我記得是2010年的一個(gè)夏天,當(dāng)時(shí)在Maastricht有一個(gè)非正式的午餐會(huì)。很多公司(包括谷歌、思科、愛立信、Skype、Mozilla、Linden Labs等)的開發(fā)者齊聚一堂,討論WebRTC應(yīng)該是什么樣子的。你可以在rtc-web.alvestrand.com上找到當(dāng)時(shí)現(xiàn)場(chǎng)的PPT。
Skype對(duì)IETF設(shè)計(jì)的Opus所做的貢獻(xiàn)同樣為WebRTC的實(shí)現(xiàn)提供了重要的指南。
?
站在巨人的肩膀上
在IETF時(shí),你需要做許多擴(kuò)展工作。而開發(fā)WebRTC卻很幸運(yùn),因?yàn)楹芏嗉夹g(shù)已經(jīng)存在,所以我們不必事事親為地去解決問題。但如果你不喜歡這些已存在的技術(shù),就會(huì)很麻煩。摒棄這些已有的技術(shù)需要一個(gè)相當(dāng)充分的理由,開發(fā)你自己的技術(shù)顯然并不是明智之舉。
?
我們沒有試圖去再標(biāo)準(zhǔn)化諸如信令這樣的東西,這些通過SIP和其他非IETF的方式已得到解決。
?
我沒有像Justin 和Harald那樣投入到標(biāo)準(zhǔn)化工作中去,但是我很享受參與WebRTC開發(fā)的過程。那個(gè)時(shí)候,我對(duì)于能夠回來為用戶開發(fā)新的產(chǎn)品感到非常興奮。
未來
WebRTC今時(shí)今日的地位已經(jīng)非常重要。它還在不斷地迭代中,但我已經(jīng)不再參與其中的工作了。
我非常高興看到云計(jì)算給通信帶來的進(jìn)步。使用高級(jí)算法可以消除背景噪音,使以前無法實(shí)現(xiàn)的通信成為可能。我們看到,WebRTC已經(jīng)不再限于通信。當(dāng)時(shí)誰能知道,9年以后,它能用在基于云的游戲上呢?沒有WebRTC,這一切都不可能。
Serge Lachapelle ??谷歌產(chǎn)品管理總監(jiān),從事視頻通信工作超過20年時(shí)間,曾是視頻會(huì)議軟件公司Marratech 的聯(lián)合創(chuàng)始人,該公司后被谷歌收購(gòu),Serge Lachapelle隨后加入谷歌。在谷歌,Serge Lachapelle啟動(dòng)了很多重要的視頻會(huì)話項(xiàng)目,包括 Gmail Video Chat, Google Hangouts, WebRTC, Google Duo, 和Google Meet等。
延伸閱讀:W3C與IETF共同定義WebRTC未來6大應(yīng)用方向
?
翻譯?/Alex Li
技術(shù)Review:劉連響
原文鏈接:https://webrtcforthecurious.com/docs/10-history-of-webrtc/#webrtc
?
詳情請(qǐng)掃描圖中的二維碼或點(diǎn)擊閱讀原文了解大會(huì)更多信息。
總結(jié)
- 上一篇: AOM Summit:拥抱开源,引领新技
- 下一篇: 全球多媒体视频内容保护最佳实践