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