WebRTC:并非解决音视频应用所有问题的银弹
WebRTC1.0標準雖然已經定稿,但各個瀏覽器的實現都還不成熟,處于快速迭代中,網易云信CTO趙加雨針在接受LiveVideoStack采訪時,針對實時通信技術演進、WebRTC國內外發展與趨勢、以及開發難點和不足做了詳細分析。
LiveVideoStack:您參與開發了WebEx Meeting,Cisco Spark到現在的WebRTC,開發音視頻應用的難度與流程有了哪些變化?挑戰在哪里?
Rain:?WebEx是十幾年前的產品,那個時候的帶寬還很低,做音視頻的人才也很少,研發的難度還是很大的,為了實現低帶寬場景下的桌面共享和音視頻通話,WebEx也是做了很多黑科技的。發展到今天帶寬已經不是問題,但是人們對于音視頻的期望和要求也變高了,加上各種弱網和跨網的問題,音視頻研發的難度仍然很高,而WebRTC的開源在一定程度上降低了音視頻研發的門檻,實現一個簡單的音視頻應用變得相對容易了,但是要想實現一個高質量的音視頻應用,難度仍然很大。
LiveVideoStack:從小團隊到大團隊,直到擔任CTO,每個階段面臨的最大挑戰是什么?如何找到不斷前行的動力?
Rain:從普通工程師一路走來,個人能力在不斷提高,相應的承擔的膽子也越來越大,從自己做到帶團隊做,到現在作為CTO,每個階段有每個階段的挑戰。作為CTO,需要對整個團隊的技術架構和技術方向負責,對技術團隊的成長和團隊建設負責,也要有一定的業務意識,和其他團隊一起對業務負責。個人能保持不斷成長,我的心得是要保持好奇心,對于新技術要保持不斷學習,另外要不斷走出舒適區,每一次走出舒適區都是成長最大的時候。第三是盡量和牛人一起工作,在類似網易這樣的公司,和頂級的團隊和頂級的人才一起工作成長會非常大。
LiveVideoStack:對于有興趣(或轉行)學習音視頻開發的初學者,您有什么建議?有沒有推薦學習的圖書資料?從哪些技術棧開始入手?
Rain:音視頻技術棧比較長,有側重算法的,也有側重工程的,有編解碼相關的,也有網絡和傳輸相關的,有服務端開發,有算法層開發,也有各種端適配,有基于UDP的實時音技術,也有基于TCP的直播技術,一個人很難覆蓋所有的技術點。個人建議是結合自己的技術背景和興趣,選擇某一個點開始,然后逐漸深入。當選擇一個方向后,可以看相關的資料,音視頻的技術書籍比較少,但是有大量的RFC文檔,因此需要一定的英文閱讀能力。當然,最好的入門方式是加入類似網易云信這樣的專業音視頻團隊,跟著項目和同事學習,同時大量閱讀RFC文檔。
?
關于WebRTC
?
LiveVideoStack:去年蘋果宣布在iOS 11中支持WebRTC,至此完成了主流PC瀏覽器和移動端的全覆蓋,您認為它會成為今年的技術熱點和趨勢嗎?
Rain:我相信會的,WebRTC從發布至今一直是技術的熱點,Safari 11開始支持WebRTC后,這表示所有主流OS上的default browser都支持WebRTC了,這會進一步推動WebRTC的應用。WebRTC是P2P的,沒有考慮服務端,也沒有考慮與其他系統的集成,有些公司會基于WebRTC技術來構建音視頻應用,另外由于WebRTC的普及,各音視頻應用也會考慮支持WebRTC,將瀏覽器作為音視頻應用的入口。
LiveVideoStack:WebRTC在國外的發展是如何一步一步走到現在的?您對國內目前的應用現狀如何看?
Rain:自從Google在2011年開源WebRTC后,這一技術就一直備受關注,但是由于音視頻技術的復雜性和規范制定的滯后性,前幾年的WebRTC技術一直處于試用階段,并不穩定,最早支持WebRTC技術的Chrome瀏覽器和Firefox瀏覽器,Chrome在功能上相對穩定一點,但在遵循規范上做的不夠好,Firefox在遵循規范上做的更好,但是功能上不夠成熟。過去幾年的WebRTC技術實現和規范制定都在快速迭代中,因此并沒有成熟的商業化產品出現,直到最近2年,出現了越來越多的WebRTC應用,也有更多音視頻應用支持WebRTC,相信WebRTC在教育、遠程醫療等場景下會有較為廣泛的應用。
LiveVideoStack:國外使用WebRTC的項目或者創業公司的情況如何?有什么是我們可以去借鑒和學習的地方。
Rain:隨著支持WebRTC的瀏覽器越來越多,國外出現了不少創業公司,完全基于WebRTC技術來實現音視頻通話,沒有SFU/MCU,可以實現雙人通話,也可以通過mesh的方式實現3-4人的多方通話,由于沒有流媒體服務端,也沒有流量成本,因此可以以比較低的價格來提供相對簡單的音視頻服務,另外也有一些創業公司并不是構建音視頻應用,而是利用WebRTC技術并結合來其他一些技術來構建有意思的應用,譬如結合Web Audio API, File API, MSE,Canvas/WebGL等技術,還有一些公司利用DataChannel來實現完全基于web的P2P分發網絡,WebRTC和其他的一些HTML5技術一起賦予了browser更多的能力,這里可以挖掘出不少玩法。
LiveVideoStack:去年的W3C技術大會提出通過QUIC來實現WebRTC,對此您如何看待?
Rain:QUIC是Google提出的傳輸層協議,是一種可靠UDP協議,用于解決TCP協議的隊首阻塞、建立連接慢、帶寬利用不足、時延大等問題,隨著QUIC協議的成熟,應該會被利用到更多地方,包括WebRTC的DataChannel。
LiveVideoStack:WebRTC對主流視頻編解碼的支持還并不是很好,尤其是對于H.265的支持,您如何看待這個問題?他未來會去做支持嗎?包括AV1等等。
Rain:WebRTC目前支持VP8/VP9/H264,支持H265并沒有太多技術上的問題,目前主要的問題還是license,而這個問題短期內還看不到解決的可能,因此H265在WebRTC里的支持還不太樂觀。AV1是AOM聯盟推出的視頻編碼標準,AOM聯盟的目標是在視頻領域復制OPUS在音頻編碼領域的成功,實現一個能適應多種場景(高時延和低時延,軟編和硬編,視頻與錄屏等等)的視頻編碼器,AOM獲得了非常多公司的支持,AV1編碼器的進展也比較快,隨著AV1的成熟,WebRTC應該會比較快的支持AV1。
LiveVideoStack:在應用WebRTC開發過程中,您認為或者遇到的難點有哪些以及解決方案式怎樣的?
Rain:WebRTC標準剛剛定稿,各個瀏覽器的實現都還不成熟,也處于快速迭代中,因此基于WebRTC的研發一方面要兼容各個瀏覽器的區別,也需要快速跟上瀏覽器的迭代速度,另外WebRTC并沒有定義信令怎么做,也沒有服務端的方案,也沒有錄制、轉碼等,要實現一個完整的音視頻應用還需要做非常多的工作。如果是基于libwebrtc來構建音視頻應用,需要非常資深的團隊花比較多的時間才能吃透libwebrtc的代碼,而這些代碼也在快速迭代中,你可能也需要將這些基于P2P場景的策略算法修改成適合多人會話場景。
LiveVideoStack:您認為哪些行業會成為WebRTC的突破點和最佳實踐應用?
Rain:WebRTC實現了在web端的低時延音視頻通話的能力,因此需要web端低時延音視頻的場景都可以利用webrtc技術來實現,譬如在線教育和遠程醫療。不過這里也要提醒一下,WebRTC并不是解決音視頻應用所有問題的銀彈,它僅僅解決了音視頻應用的一部分問題,提供了一個音頻處理框架、網絡擁塞控制框架,P2P打洞與網絡連接框架,音視頻引擎等,所有的策略算法都是為了P2P場景下的語音通話來實現的,你的產品可能并不是這樣的場景,那么就不能使用WebRTC,或者要做深度修改。譬如網易云信,作為PaaS平臺需要滿足各種場景下的音視頻應用,有一類應用就是音樂教學,既有音樂又有通話,音樂的聲音是全頻段的,因為有通話,回音消除也是需要的,為了保證音樂教學場景下的聲音效果,從語音采集到語音3A前處理,再到網絡擁塞控制策略等等,都需要針對音樂教學這樣的場景來做特別的策略算法。
網易云信國際短信上線啦!
總結
以上是生活随笔為你收集整理的WebRTC:并非解决音视频应用所有问题的银弹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易云信国际短信上线啦!
- 下一篇: 【MCtalk直播】全面复盘直播答题,深