WebRTCon聯(lián)席主席&網(wǎng)易云信CTO趙加雨
在演講中吳桐和大家分享了網(wǎng)易云信基于WebRTC技術(shù)的開發(fā)難點(diǎn)、解決方案和應(yīng)用案例,充分體現(xiàn)網(wǎng)易自研的全功能工業(yè)級(jí)音視頻框架NRTC(Netease Real-Time Communication),對(duì)WebRTC的技術(shù)升級(jí)和優(yōu)化,以及對(duì)音視頻使用場(chǎng)景的全面思考。
網(wǎng)易云信多媒體資深技術(shù)架構(gòu)師吳桐
強(qiáng)化瀏覽器兼容性 實(shí)現(xiàn)多人音視頻通話
目前,如在線教育、網(wǎng)絡(luò)直播等,以Web端為入口的多人音視頻通話場(chǎng)景已經(jīng)滲透到人們的生活。而WebRTC技術(shù)最主要的優(yōu)勢(shì)就在于它可以幫助用戶在沒有插件和客戶端的情況下,輕松實(shí)現(xiàn)網(wǎng)頁(yè)瀏覽器之間的超低延時(shí)的語(yǔ)音通話和視頻通話。
然而作為一項(xiàng)開源技術(shù),各家瀏覽器在實(shí)現(xiàn)WebRTC的同時(shí),技術(shù)層面也存在較大的差異,這就導(dǎo)致了不同瀏覽器端的API、SDP等不兼容的情況。面對(duì)這一技術(shù)難點(diǎn),網(wǎng)易云信通過(guò)NRTC做了大量的調(diào)優(yōu)工作。NRTC基于JavaScript腳本,把WebRTC原生的API封裝成更通用、更易用的軟件開發(fā)包提供給用戶,從而實(shí)現(xiàn)不同瀏覽器之間的適配。
此外,點(diǎn)對(duì)點(diǎn)單聊模式的WebRTC在多人音視頻會(huì)話以及超大型群聊的場(chǎng)景中沒有進(jìn)一步的優(yōu)化操作。為了解決這一問(wèn)題并提供更高效的媒體數(shù)據(jù)傳輸能力,網(wǎng)易云信在多人會(huì)議場(chǎng)景中選擇了SFU拓?fù)浞桨?,即轉(zhuǎn)發(fā)模型方案。同時(shí),為了減小用戶側(cè)流量的壓力,網(wǎng)易云信在SFU拓?fù)浞桨傅募夹g(shù)上配合訂閱系統(tǒng)一起使用。如此一來(lái),這種組合方案不僅降低了用戶端的復(fù)雜度,還保證了服務(wù)器端的高性能。
網(wǎng)易云信全功能工業(yè)級(jí)音視頻技術(shù)框架——NRTC
接入NRTC網(wǎng)關(guān)服務(wù)器 實(shí)踐豐富音視頻功能
近兩年,直播競(jìng)答、游戲直播、短視頻、在線抓娃娃等新的實(shí)時(shí)音視頻應(yīng)用快速發(fā)展和更迭,隨著用戶對(duì)于功能和場(chǎng)景的多方面需求,網(wǎng)易云信通過(guò)在NRTC架構(gòu)中增加WebRTC的網(wǎng)關(guān)服務(wù)器,從而賦予WebRTC更多音視頻應(yīng)用能力。
吳桐將這些能力總結(jié)為六點(diǎn):第一,基于UDP的網(wǎng)易云信音視頻通話功能具有流暢、低時(shí)延的特點(diǎn),一般可用于在線教學(xué)、多人視頻會(huì)議等音視頻交友場(chǎng)景;第二,網(wǎng)易云信能夠提供基于TCP的高品質(zhì)直播能力,在秀場(chǎng)直播、游戲直播、大班教學(xué)等場(chǎng)景中優(yōu)勢(shì)明顯;第三,網(wǎng)易云信也可以將音視頻通話和直播能力相結(jié)合,提供互動(dòng)直播功能,通過(guò)上麥下麥控制用戶在連麥和觀眾模式間切換;第四,可提供點(diǎn)播與轉(zhuǎn)碼功能,通過(guò)融合CDN實(shí)現(xiàn)海量分發(fā);第五,完整提供短視頻功能,短視頻SDK也一并俱全;第六,更豐富的場(chǎng)景工具,例如提供了互動(dòng)白板,文檔共享等功能。
通過(guò)網(wǎng)易云信的網(wǎng)關(guān)服務(wù)器,WebRTC具備了 NRTC全面、成熟且穩(wěn)定的功能。而NRTC本身也支撐了網(wǎng)易內(nèi)外部各個(gè)客戶的海量應(yīng)用,譬如網(wǎng)易云音樂、網(wǎng)易新聞、有道精品課網(wǎng)易云課堂等。
優(yōu)化服務(wù)端QoS 追求高質(zhì)量音視頻效果
對(duì)于所有音視頻應(yīng)用來(lái)說(shuō),QoS(Quality of Service,服務(wù)質(zhì)量)策略是非常重要的一部分。
對(duì)于WebRTC Web客戶端來(lái)說(shuō),QoS策略都是內(nèi)置在瀏覽器內(nèi)部的,用戶無(wú)法直接修改相關(guān)算法,只能通過(guò)SDP配置來(lái)選擇需要開啟的QoS策略。
WebRTC網(wǎng)關(guān)服務(wù)器端,針對(duì)不同瀏覽器進(jìn)行QoS方案的選擇和定制,在服務(wù)器端采用智能的NACK和PLI方案來(lái)實(shí)現(xiàn)丟包的快速重傳,移植WebRTC Native代碼里面GCC擁塞控制部分到服務(wù)端,并進(jìn)行相關(guān)GCC算法的深度優(yōu)化,讓它更適用于用戶的真實(shí)網(wǎng)絡(luò)情況。
而NRTC的QoS的策略是跟場(chǎng)景模式相關(guān)的。網(wǎng)易云信會(huì)根據(jù)不同場(chǎng)景對(duì)流暢度、清晰度、網(wǎng)絡(luò)環(huán)境以及智能化的要求調(diào)整對(duì)應(yīng)的QoS策略。NRTC具備智能的FEC(Forward Error Correction,向前糾錯(cuò))策略,由于WebRTC內(nèi)置的ULP-FEC方案存在缺陷,NRTC在采用了智能FEC之后,效果相比標(biāo)準(zhǔn)WebRTC會(huì)有質(zhì)的飛躍。此外,NRTC還將FEC與NACK做深度結(jié)合,做到了重傳和恢復(fù)的最佳效率和帶寬的最佳利用。在NRTC的服務(wù)端,網(wǎng)易云信的工程師還會(huì)更多地考慮到用戶上、下行網(wǎng)絡(luò)不一致的問(wèn)題。吳桐分享說(shuō):“網(wǎng)易云信傳輸層采用私有協(xié)議的方式,我們?cè)诨卣{(diào)網(wǎng)絡(luò)情況的時(shí)候,NRTC會(huì)做更加智能以及更加貼近真實(shí)網(wǎng)絡(luò)的反饋。針對(duì)不同用戶下行網(wǎng)絡(luò),NRTC可以選擇不同的策略,針對(duì)丟包、低帶寬等弱網(wǎng)進(jìn)行適配?!?/p>
2017年,隨著微軟Edge瀏覽器和蘋果Safari瀏覽器對(duì)WebRTC的支持以及WebRTC1.0 標(biāo)準(zhǔn)的落地,WebRTC技術(shù)將在2018年迎來(lái)更大的發(fā)展空間。吳桐對(duì)于WebRTC的技術(shù)發(fā)展進(jìn)行了展望和預(yù)測(cè):首先,去年WebRTC 1.0標(biāo)準(zhǔn)的落地會(huì)讓這項(xiàng)技術(shù)的標(biāo)準(zhǔn)化做的越來(lái)越好,瀏覽器的兼容性問(wèn)題也將會(huì)得到改善;第二,類似AV1等新的視頻編碼器會(huì)進(jìn)入到WebRTC領(lǐng)域,而針對(duì)VP9的優(yōu)化還會(huì)繼續(xù),并讓W(xué)ebRTC技術(shù)得到更好的呈現(xiàn);第三, 2018年標(biāo)準(zhǔn)WebRTC的 QoS方案將得到更進(jìn)一步優(yōu)化;第四,WebRTC還不能對(duì)移動(dòng)端瀏覽器進(jìn)行很好的支持,這依然是需要改進(jìn)的方面;最后,視頻識(shí)別、AI和AR等技術(shù)將會(huì)和WebRTC進(jìn)行結(jié)合,在實(shí)時(shí)通訊領(lǐng)域,美顏等一些美化特效將在Web端有更多嘗試。