網易視頻云朱玲:互動直播場景下的視頻核心技術實踐
12月9日-10日,中國科學院軟件研究所、中科軟科技聯合主辦的中國軟件技術大會在北京開幕,來自國內各大互聯網和IT公司的技術從業者聚集于此,共同討論交流前沿技術和發展趨勢、分享最佳實踐和應用經驗。
不久前,網易視頻云在國內首家推出了多路互動直播服務,收到業內人士的廣泛關注。在今年的中國軟件技術大會,網易資深音視頻工程師朱玲受邀出席,同與會者分享了網易視頻云在互動直播場景下的視頻核心技術實踐。
用戶需要什么樣的互動直播?
據朱玲介紹,通過長期的用戶調研和市場研究,網易視頻云發現互動直播用戶最為關心的有三個問題:
1、低延時。延時最大不超過500ms,當然越小越好;
2,流暢。每秒最少十幾幀,24fps~30fps,接近電影、電視的播放速率 ,用戶體驗佳;
3,清晰。用客觀標準衡量的話,當視頻編碼后與原始視頻的峰值信噪比。要高于30db,主觀感受清晰。
那么,首先需要解決的就是低延時問題。延時指的是端到端延時,包括發送端、網路傳輸、接收端播放延時,其中延時占比最大的是傳輸延時。市場上很多直播服務采用了RTMP/TCP協議,將視頻數據流封裝成FLV格式進行傳輸,TCP協議在網絡OSI模型中屬于傳輸層協議,通過擁塞控制、流量控制等算法實現可靠鏈接。
然而TCP協議中通過丟包重傳、擁塞避免等算法來做擁塞控制,雖然保障了傳輸的可靠性,延時也在增大。一些公司通過修改TCP協議棧來解決延時問題,網易視頻云在互動直播方面選擇了UDP作為傳輸協議。
朱玲介紹說,UDP協議本身沒有QoS,在流暢度方面存在一些問題。網易視頻云給出的解決方案是通過RTP/RTCP半傳輸半應用層協議來實現可靠傳輸控制方案。一方面,RTP標準協議是為了傳輸實時多媒體應用而生的,有著豐富的擴展以及補充協議,彌補了UDP協議的不足;另一方面,思科、Google普遍采用這種方案來實現傳輸流控,可以說這是一種工業界的標準,更適用于第三方標準應用對接。
據朱玲介紹,針對用戶的基本需求,為滿足和提升用戶體驗。網易視頻云自主研發了一整套的視頻流傳輸架構,視頻采集后經過編碼,RTP封裝,發送RTP以及RTCP的sender report到對端,對端在接收、解碼過程中,將流量監控信息實時通過標準RTCP協議反饋給發送端,進行編碼以及發送的控制。
視頻傳輸在實踐過程中遇到了哪些挑戰?
在實際的視頻傳輸過程中,往往還會遇到很多意想不到的問題,比如受限于編碼器對不同內容圖像的編碼效率以及壓縮率不同,RTP包的產生并不是均勻的,往往會有burst;在IP網絡中,各個分組從發送方到接收方所歷經的網絡途徑可能不同,從而各個分組的傳輸時延也各不相同,甚至容易發生分組的到達次序發生變化;最終在接收端出現亂序、延時抖動、丟包等,用戶端出現卡頓、花屏、無法播放等一系列問題。
朱玲解釋說,網易視頻云主要從三個方面來解決這些問題,即平滑發送、抗丟包、抗抖動。
首先是平滑發送。在發送端維護一個rtp數據包buffer,一個發送優先級隊列,當rtp數據包產生后并不是立刻發送,而是存放到buffer中緩存,并開啟一個發送定時器線程,將數據包從數據buffer中取出,存放在優先級隊列中,進行發送,我們在發送之前,會進行網絡探測,根據探測到的可用帶寬,自適應的調節發送速率。
其次解決丟包問題。網絡丟包分為兩種情況,一種是網絡中存在的固有,隨機丟包,譬如聯路層的傳輸誤碼,另一種是網絡擁塞丟包。針對這兩種不同的丟包,應該采用不同的解決方法,一種是前向糾錯更正FEC, 另一種是ARQ自動請求重傳。對于互動這種這種延時敏感的應用場景,網易視頻云選擇FEC作為丟包解決方案。
“為了解決丟包問題,我們的思路是盡力傳輸的基礎上進行擁塞控制,盡量避免發生擁塞丟包,當聯路存在不可避免的隨機丟包,通過FEC,增強傳輸的魯棒性;利用接收端反饋信息,估計當前可用帶寬,避免擁塞;編碼器在當前估計的可用帶寬下,選擇合適的編碼策略,達到帶寬利益最大化傳輸。”朱玲介紹說。
網易視頻云是怎么解決的?
朱玲介紹了網易視頻云解決擁塞問題的思路。在接收端根據流量監控,實時反饋當前網絡聯路狀況,反饋給發送端,發送端根據反饋的丟包信息,添加合適的冗余包,并結合接收端發送的帶寬估計信息,估計當前的可用帶寬,并進行視頻編碼控制。
除了丟包問題,影響直播體驗的另一個常見情況就是延時抖動。所謂抖動,就是每個數據包到達對端的時間延時是動態變化,可能由于路由聯路的選擇變更,網絡擁塞等造成,它的直接后果就是,會導致對端播放的不流暢。為了解決抖動問題,網易視頻云在接收和播放中引入了JitterBuffer的策略。
朱玲總結說,實驗以及線上用戶的統計數據表明,網易視頻云的互動直播產品完全滿足用戶需求,平均延時在網絡較好情況下,端到端延時控制在200ms左右,在網絡不穩定丟包率在20%以內,網易視頻云依然能提供較為流暢清晰的視頻體驗。http://vcloud.163.com/