互動直播還有多遠?從三大技術難題說起
2個月前,我在某直播平台上看了一場遊戲直播,那叫一個難受,連延遲帶卡頓,看到後半場卡的我直上廁所,回來後發現畫面雖變了但仍舊卡,一氣之下果斷的關了直播。上個月去上海參加華為手機的發布會,想在現場做一下直播,移動4G竟然連信號都沒有,只能退回到3G網路在朋友群發一些圖片。面對移動網路的問題,只能是沉默再沉默了。
其實不只是我看直播會卡,網上還有很多人反映類似情況,某些硬體論壇探討直播延遲卡頓的帖子還真是不少。很多人以為用PC和手機看直播或者做直播時延遲卡頓是硬體的事,其實硬體只是其中的一部分因素,直播軟體的自身原因是另一部分因素,主要因素還是在於網路帶寬,以及為直播應用提供雲服務的視頻雲計算產品。所以,視頻雲計算產品的能力,決定這一個互動直播產品的運行情況。為了讓大家更清楚,下面,我們就來談談互動直播遇到的難題以及視頻雲的直播解決方案。
用戶體驗,決定了互動直播在技術上面臨三大難題
使用互動直播的用戶最關心三個問題:延時、畫面流暢性與直播清晰度。理想的直播狀態當然是低延時、高流暢性與高清晰度。這意味著,延時最大不超過500ms,越小越好;流暢性最好能夠接近電影及電視的播放速率;清晰度上,至少是用戶主觀能夠感受到清晰。
原因在於,當前4G/wifi的複雜網路傳輸情況,並不能滿足用戶對互動直播產品視頻體驗的要求甚至說是基本需求,實現直播時用戶的最佳體驗,高清晰對眼下的移動直播而言其實是一個比較奢侈的存在。其實只要不會頻繁出現延遲、卡頓等情況,就已經是提高了用戶體驗。
除了4G網路本身的傳輸速率限制,當前直播行業的上千款移動直播產品其實是在瓜分有限的4G網路資源。尤其是在同一直播現場大量移動直播應用同時工作的時候,會嚴重加劇延遲與卡頓,有些用戶甚至無法正常使用移動直播。事實上,當前中國仍舊有80%的移動環境處於弱網狀態,基本上所有的移動直播,內容傳輸商都會更加困難。相關數據顯示,有75%的視頻從業者認為,延遲和卡頓阻礙了直播行業的整體發展。延時、卡頓不流暢、不夠清晰,可以說是實現互動直播產品在技術上面臨的三大難題。
雲計算是直播的本源,視頻雲技術是解決三大難題的關鍵
互動直播在技術上有三大難題,但火熱的直播行業同時讓用戶暴漲,這便給直播的發展帶來了更大的壓力,生存難度也由此增加。作為一款好用的直播產品,都應該思考在直播過程中,如何滿足用戶低延時流暢清晰的基本需求。這裡的延時是端到端延時,包括採集、編碼、打包、發送、網路傳輸、接收、解碼到顯示。其中網路傳輸延時佔比最大,要做到低延時在傳輸層一般選用udp的傳輸協議,讓數據包儘力傳輸。因為TCP的延時較大,尤其在wifi/4G這種丟包時有發生的時候。然而UDP是沒有qos的,無法保障其傳輸的服務質量,而滿足用戶的流暢清晰的視覺體驗,要求傳輸一定要是可靠的,這就需要在應用層自主開發實現一套流控機制,來提供整個互動直播鏈路的服務保障。
那麼,到底如何來實現這樣一套行之有效的流控方案呢?我們可以從12月10日中國軟體技術大會上,網易視頻雲技術專家朱玲的分享中找到一些答案。在技術上,面對互動直播出現的亂序、延時抖動、丟包等不確定的網路現象,網易視頻雲將解決方案分成三個步驟:即平滑發送、扛丟包以及抗抖動。
步驟1:平滑發送。就是在發送端維護一個rtp數據包buffer,這是一個發送優先順序隊列。當rtp數據包產生後並不是立刻發送,而是存放到buffer中緩存。並開啟一個發送定時器線程,將數據包從數據buffer中取出,存放在優先順序隊列中進行發送。在發送之前,會進行網路探測,根據探測到的可用帶寬,自適應的調節發送速率。這樣,就實現了優先選擇以及自適應性的精準發送,根據帶寬的情況適當發送數據包。
步驟2:扛丟包。網路丟包有兩種原因:一種是網路中存在的固有,隨機丟包,另一種是網路擁塞丟包。針對隨機丟包,可以通過fec前向糾錯編碼方式,對傳輸的媒體包添加合理的冗餘包,接收端利用接收到部分媒體包部分冗餘包恢復出全部媒體包的信息,讓接收端對丟包完全無感知,另一方面,也是大多數情況我們要做的事情,就是避免擁塞,對我們的發送的數據流量做合理的帶寬估計,並基於最大發送帶寬估計中,控制視頻編碼器,發送最有效的,最有價值的視頻信息。
步驟3:抗抖動。除了丟包這種常見網路問題以外,抖動也是無處不在的,所謂抖動就是包到達對端的延時是變化的,不一定的,導致的結果播放的不流暢;那要解決網路抖動問題。一般是引入jitter buffer策略,在解碼器與顯示之間維持一個緩衝buffer,當數據解碼之後,並不是立刻送去播放,而是估計一個抖動最優值,延時這個最優值時間再講數據播放,實現的難點是如何動態估計這個jitter。 JitterBuffer值過大則延時增加,過小則抖動導致播放不流暢情況惡化。可以採用卡爾曼濾波方式自回歸迭代逐步收斂到最優的jitter值,作為我們的估計值,來平滑抖動。
經過以上3個步驟,目前網易視頻雲服務的互動直播產品的平均延時,在網路較好情況下,端到端延時控制在200ms左右,在網路差強人意的情況下,丟包率保持在20%以內。這個數據,足可以為用戶提供較為流暢清晰的視頻體驗。
更多行業引入互動直播,視頻雲3步解決方案很有意義
在移動直播誕生以後,我認為直播會是各行業快速連接互聯網的方式之一。隨著直播行業的迅速發展,多個行業都開始對直播這種方式來進行一些適當的運用。譬如在線教育行業,最大的短板就是師生互動問題,沒有互動只有內容會大大降低用戶體驗,將直播引入,同時配合教學白板的互動,立即就有了現場交流感。再如健康醫療行業的臨床教學,也是一個難題,不可能所有學生都進入手術室現場去學習,手術直播則可以解決這個問題,教授們在做手術的時候同時做直播與學生進行交流,這是醫療行業的一個非常大的進步。除此,直播互動在娛樂秀場、遊戲、會場及安防監控等領域的應用,已成業內常態。
互動直播應用的越廣泛,也就意味著直播行業面臨的挑戰越大,每個行業不同的直播都可能遇到更多的問題。實際上,這也是對每個互動直播產品背後的視頻雲服務產品解決方案的挑戰。目前而言,在我見過的視頻雲計算解決方案中,網易視頻雲的三步式解決方案,思路是是比較簡潔的,同時也是比較有效的。簡單的通過平滑發送、扛丟包以及抗抖動三步,就能達到延時控制在200ms左右,丟包率在20%以內。事實上,業內人士都能看出來這個解決方案背後的框架模型設計、演算法以及技術難度怕是並不簡單,其團隊應該付出了很多的努力。獨創了3步視頻雲解決方案,應該為團隊感到驕傲,但我認為,這個思路可以為更多的雲計算團隊指引一個方向,才是其最大的價值。
當前來看,互動直播在將來對於一些行業的重要性是不言而喻的,同時移動直播行業的發展與壯大也需要更多視頻云為其提供解決方案。這就需要更多的雲計算產品能持續創新直播技術,以為各行業的升級轉型以及直播行業的進一步發展,提供更多的幫助。
網易視頻雲,在技術上先一步而行,值得點贊。
【王吉偉,商業模式評論人,專欄作者,關注TMT與IOT,專註互聯網+及企業轉型研究。微信公號:王吉偉(jiwei1122)】
推薦閱讀: