由于直播推送端會存在于各種不同的網(wǎng)絡(luò)環(huán)境下面:有線、無線、3G、4G、衛(wèi)星信號等等,在這些網(wǎng)絡(luò)條件下,如何做到直播流暢不卡頓,我們這個時候就需要引入可變碼率和丟幀兩種策略,保證推送的實時和數(shù)據(jù)的有效。之前我們介紹過直播過程卡頓時,切換碼率與選擇性丟幀的處理策略研究,下面先介紹一些基礎(chǔ)知識和解決原理。
基礎(chǔ)知識:I幀、B幀、P幀
I幀表示關(guān)鍵幀。 你可以理解為這一幀畫面的完整保留;解碼時只需要本幀數(shù)據(jù)就可以完成。(因為包含完整畫面)
P幀表示這一幀跟之前的一個關(guān)鍵幀(或P幀)的差別。 解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù))
B幀是雙向差別幀。 B幀記錄的是本幀與前后幀的差別(具體比較復(fù)雜,有4種情況)。換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加取得最終的畫面。
B幀壓縮率高,但是編解碼時會比較耗費CPU,而且在直播中可能會增加直播延時,因此在移動端上一般不使用B幀。
關(guān)鍵幀緩存策略
一個典型的視頻幀序列為IBBPBBPBBP……
對于直播而言,為了減少直播的延時,通常在編碼時不使用B幀。P幀B幀對于I幀都有直接或者間接的依賴關(guān)系,所以播放器要解碼一個視頻幀序列,并進(jìn)行播放,必須首先解碼出I幀,其后續(xù)的B幀和P幀才能進(jìn)行解碼,這樣服務(wù)端如何進(jìn)行關(guān)鍵幀的緩存,則對直播的延時以及其他方面有非常大的影響。
比較好的策略是服務(wù)端自動判斷關(guān)鍵幀的間隔,按業(yè)務(wù)需求緩存幀序列,保證在緩存中存儲至少兩個或者以上的關(guān)鍵幀,以應(yīng)對低延時、防卡頓、智能丟包等需求。
延遲與卡頓的折中
直播的延時與卡頓是分析直播業(yè)務(wù)質(zhì)量時,非常關(guān)注的兩項指標(biāo)。 互動直播的場景對延時非常敏感,新聞體育類直播則更加關(guān)注播放的流暢度。
然而,這兩項指標(biāo)從理論上來說,是一對矛盾的關(guān)系——需要更低的延時,則表明服務(wù)器端和播放端的緩沖區(qū)都必須更短,來自網(wǎng)絡(luò)的異常抖動容易引起卡頓;業(yè)務(wù)可以接受較高的延時時,服務(wù)端和播放端都可以有較長的緩沖區(qū),以應(yīng)對來自網(wǎng)絡(luò)的抖動,提供更流暢的直播體驗。
當(dāng)然,對于網(wǎng)絡(luò)條件非常好的用戶,這兩項是可以同時保證的,這里主要是針對網(wǎng)絡(luò)條件不是那么好的用戶,如何解決延時與卡頓的問題。
這里通常有兩種技術(shù)來平衡和優(yōu)化這兩個指標(biāo)。
一是服務(wù)端提供靈活的配置策略 。
對于延時要求更敏感的,則在服務(wù)端在保證關(guān)鍵幀的情況下,對每個連接維持一個較小的緩沖隊列;對于卡頓要求更高的直播,則適當(dāng)增加緩沖隊列的長度,保證播放的流暢。
二是服務(wù)端對所有連接的網(wǎng)絡(luò)情況進(jìn)行智能檢測 。
當(dāng)網(wǎng)絡(luò)狀況良好時,服務(wù)端會縮小該連接的緩沖隊列的大小,降低延遲;而當(dāng)網(wǎng)絡(luò)狀況較差時,特別是檢測到抖動較為明顯時,服務(wù)端對該連接增加緩沖隊列長度,優(yōu)先保證播放的流暢性。
丟包策略
什么時候需要丟包呢?
對于一個網(wǎng)絡(luò)連接很好,延時也比較小的連接,丟包策略永遠(yuǎn)沒有用武之地的。而網(wǎng)絡(luò)連接比較差的用戶,因為下載速度比較慢或者抖動比較大,這個用戶的延時就會越來越高。
另外一種情況是,如果直播流關(guān)鍵幀間隔比較長,那么在保證首包是關(guān)鍵幀的情況下,觀看這個節(jié)目的觀眾,延遲有可能會達(dá)到一個關(guān)鍵幀序列的長度。上述兩種情況,都需要啟用丟包策略,來調(diào)整播放的延時。
關(guān)于丟包,需要解決兩個問題:
一是正確判斷何時需要進(jìn)行丟包;
二是如何丟包以使得對觀眾的播放體驗影響最小。 較好的做法是后端周期監(jiān)控所有連接的緩沖隊列的長度,這樣隊列長度與時間形成一個離散的函數(shù)關(guān)系,后端通過自研算法來分析這個離散函數(shù),判斷是否需要丟包。
一般的丟幀策略,就是直接丟棄一個完整的視頻幀序列,這種策略看似簡單,但對用戶播放的影響體驗非常大。 而應(yīng)該是后臺采用逐步丟幀的策略,每個視頻幀序列,丟最后的一到兩幀,使得用戶的感知最小,平滑的逐步縮小延時的效果。
以上就是:內(nèi)容緩存與傳輸策略優(yōu)化細(xì)節(jié)原理。
蘇寧旗下子品牌蘇寧視頻云已累計服務(wù)客戶超過2000個;蘇寧視頻云憑借PPTV 十年媒體技術(shù)和服務(wù)經(jīng)驗,融合流媒體技術(shù)、P2P、CDN 分發(fā)、海量存儲、安全策略等構(gòu)建的專注視頻領(lǐng)域的一站式SaaS 服務(wù)平臺。蘇寧視頻云集視頻云直播、云點播、云上傳、云轉(zhuǎn)碼、云存儲、云統(tǒng)計等功能于一體,多平臺全方位支持客戶各種視頻場景的業(yè)務(wù)需求。
分享名稱:一對一直播技術(shù)中延遲與卡頓的矛盾關(guān)系如何解決?-創(chuàng)新互聯(lián)
文章來源:http://www.chinadenli.net/article32/dheppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站設(shè)計、搜索引擎優(yōu)化、網(wǎng)站策劃、建站公司、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容