1. 程式人生 > 其它 >淺析實時音視訊直播影響使用者體驗的幾項關鍵技術

淺析實時音視訊直播影響使用者體驗的幾項關鍵技術

這兩年網際網路領域的一個熱門關鍵詞就是實時音視訊直播,從剛開始的遊戲直播和秀場娛樂開始,實時音視訊直播帶來了遠超傳統互動的使用者體驗,現在實時音視訊直播已逐漸深入當今主流的網際網路應用形態裡。

本文將聊一聊實時音視訊直播的幾個關鍵技術:

清晰度:

4K、1080p、720p,這些概念被各大電視機廠商炒作了這麼多年,已經地球人都懂了。4K在網際網路視訊直播裡現在還不普及,主要是對網路資料傳輸要求太高了。1080p在一些對清晰度要求較高的場景如遊戲直播裡已經慢慢普及,要求的資料傳輸速率大約在4Mbps左右。720p是現在直播的主流清晰度,速率大約在1Mbps左右。在一些要求不太高的領域,還會有540p或者360p出現。

流暢度:

如果在直播時出現卡頓、轉圈,就意味著不流暢。主播和觀眾的連線通道好比一根水管,流量是有限的,因此如果清晰度提升意味著觀眾收看直播的流暢度有可能會下降。

延時:

視訊直播都是講求互動性的,如果跟秀場妹妹聊天,講了半天都沒反應就略坑爹了。但是延時也不全是壞處,適當的延遲意味著在觀眾端能夠有一定的視訊流資料快取,當出現網路不穩定時能夠抵禦小範圍波動而使得觀眾無感知。

首屏時間:

當觀眾進入直播間算起,到出現第一個主播畫面的時間叫做首屏時間。為了保證直播流暢,會快取一段資料之後再開始播放,但這個也不是絕對的,後文會詳細描述。

 

下面,我們將逐一分析和總結實時音視訊直播中的這幾個重要技術指標。

先從觀眾進入直播間那一刻說起,這相當於整個直播生命週期的開始。當進入直播間後,播放器會向CDN請求資料。此時,假設主播已經發送視訊流資料到了第100幀,由於資料傳輸的一些延時,CDN端最新收到的資料可能在第90幀。當CDN接收到拉取視訊流請求時,他會做一件非常有意思的事情,即往前回溯一段資料,在圖中顯示的是回溯2秒鐘,那就到了視訊流的第五幀。CDN會把第五幀開始往後的資料,通過RTMP或其他直播協議源源不斷的傳送到播放器。那為什麼要往回2秒鐘呢,這可能算是目前視訊直播技術中一個比較有特點的技術優化,能用於很好地平衡流暢度和首屏秒開時間。具體運作機制我們接下來再看。即時通訊開發

接下去發生的事情,很好地可以說明回退2秒的作用。因為CDN是從第5幀開始傳送資料,之後的資料全部快取在CDN伺服器中,因此可以源源不斷地把資料傳送到客戶端,圖中顯示了從第5幀到50幀之間的資料,全部快取在播放器記憶體中。這部分資料可以用於有效的抵抗網路波動造成的影響。當然,這樣做的一個缺點是播放器相比於主播,延遲時間增加了2秒。所以說,視訊直播所做的事情,就是在延時和流暢度之間找到一個很好的平衡點。

網路擁塞是網際網路上最常見的一個情景,接下去討論當發生網路擁塞時發生的情景。假設當觀眾播放到第150幀時,使用者下行網路出現問題,如果播放器沒有新的資料到來,必然會畫面卡住並開始轉菊花。而此時,主播端並不會感知到這個事情,主播還在正常推送視訊流資料。在經過了大概4秒左右的卡頓後,觀眾端的網路恢復,資料又會源源不斷從CDN流向播放器。在圖中看到網路流暢時,播放器的快取中已經存放了第280幀資料,此時當前畫面是150幀。這會產生一個什麼問題?因為播放器播放資料是按照每一幀的時間戳勻速播放,因此如果不做任何優化就意味著每經過一次卡頓,直播的延遲就會增加一段時間,而增加的時間和被卡住的時間是一致的。

經過剛剛的描述,大家一定已經明白了延時累加是一個必須解決的問題。因此,播放器還需要做的事情就是延時追趕。播放器必須要實時偵測快取中資料的情況,一旦大於某一閾值就啟動延時追趕。追趕的方式,可以是直接扔掉多餘資料也可以採用快進方式。快進模式相對來說使用者體驗會好一些,不會產生明顯跳躍,處理時要注意聲音不要因為快進而產生尖刺。最後再提一下,延時追趕不能太激進,還是應該在快取中留一段資料,用於緩解以後可能再次發生的網路擁塞。