自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于直播,所有的技術(shù)細(xì)節(jié)都在這里了(三)

企業(yè)動態(tài)
一個(gè)典型的視頻幀序列為IBBPBBPBBP……對于直播而言,為了減少直播的延時(shí),通常在編碼時(shí)不使用B幀。P幀B幀對于I幀都有直接或者間接的依賴關(guān)系,所以播放器要解碼一個(gè)視頻幀序列,并進(jìn)行播放,必須首先解碼出I幀,其后續(xù)的B幀和P幀才能進(jìn)行解碼,這樣服務(wù)端如何進(jìn)行關(guān)鍵幀的緩存,則對直播的延時(shí)以及其他方面有非常大的影響。

在分析了低延遲的直播傳輸架構(gòu)及優(yōu)化后,接下來我們將介紹在傳輸直播流媒體過程中的內(nèi)容緩存與傳輸策略優(yōu)化細(xì)節(jié)原理。

基礎(chǔ)知識:I幀、B幀、P幀。

I幀表示關(guān)鍵幀。你可以理解為這一幀畫面的完整保留;解碼時(shí)只需要本幀數(shù)據(jù)就可以完成。(因?yàn)榘暾嬅?

P幀表示這一幀跟之前的一個(gè)關(guān)鍵幀(或P幀)的差別。解碼時(shí)需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù))

B幀是雙向差別幀。B幀記錄的是本幀與前后幀的差別(具體比較復(fù)雜,有4種情況)。換言之,要解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加取得最終的畫面。B幀壓縮率高,但是編解碼時(shí)會比較耗費(fèi)CPU,而且在直播中可能會增加直播延時(shí),因此在移動端上一般不使用B幀。

關(guān)鍵幀緩存策略

一個(gè)典型的視頻幀序列為IBBPBBPBBP……對于直播而言,為了減少直播的延時(shí),通常在編碼時(shí)不使用B幀。P幀B幀對于I幀都有直接或者間接的依賴關(guān)系,所以播放器要解碼一個(gè)視頻幀序列,并進(jìn)行播放,必須首先解碼出I幀,其后續(xù)的B幀和P幀才能進(jìn)行解碼,這樣服務(wù)端如何進(jìn)行關(guān)鍵幀的緩存,則對直播的延時(shí)以及其他方面有非常大的影響。

比較好的策略是服務(wù)端自動判斷關(guān)鍵幀的間隔,按業(yè)務(wù)需求緩存幀序列,保證在緩存中存儲至少兩個(gè)或者以上的關(guān)鍵幀,以應(yīng)對低延時(shí)、防卡頓、智能丟包等需求。

延遲與卡頓的折中

直播的延時(shí)與卡頓是分析直播業(yè)務(wù)質(zhì)量時(shí),非常關(guān)注的兩項(xiàng)指標(biāo)?;又辈サ膱鼍皩ρ訒r(shí)非常敏感,新聞體育類直播則更加關(guān)注播放的流暢度。然而,這兩項(xiàng)指標(biāo)從理論上來說,是一對矛盾的關(guān)系——需要更低的延時(shí),則表明服務(wù)器端和播放端的緩沖區(qū)都必須更短,來自網(wǎng)絡(luò)的異常抖動容易引起卡頓;業(yè)務(wù)可以接受較高的延時(shí)時(shí),服務(wù)端和播放端都可以有較長的緩沖區(qū),以應(yīng)對來自網(wǎng)絡(luò)的抖動,提供更流暢的直播體驗(yàn)。當(dāng)然,對于網(wǎng)絡(luò)條件非常好的用戶,這兩項(xiàng)是可以同時(shí)保證的,這里主要是針對網(wǎng)絡(luò)條件不是那么好的用戶,如何解決延時(shí)與卡頓的問題。

這里通常有兩種技術(shù)來平衡和優(yōu)化這兩個(gè)指標(biāo)。一是服務(wù)端提供靈活的配置策略,對于延時(shí)要求更敏感的,則在服務(wù)端在保證關(guān)鍵幀的情況下,對每個(gè)連接維持一個(gè)較小的緩沖隊(duì)列;對于卡頓要求更高的直播,則適當(dāng)增加緩沖隊(duì)列的長度,保證播放的流暢。二是服務(wù)端對所有連接的網(wǎng)絡(luò)情況進(jìn)行智能檢測,當(dāng)網(wǎng)絡(luò)狀況良好時(shí),服務(wù)端會縮小該連接的緩沖隊(duì)列的大小,降低延遲;而當(dāng)網(wǎng)絡(luò)狀況較差時(shí),特別是檢測到抖動較為明顯時(shí),服務(wù)端對該連接增加緩沖隊(duì)列長度,優(yōu)先保證播放的流暢性。

 

丟包策略

什么時(shí)候需要丟包呢?對于一個(gè)網(wǎng)絡(luò)連接很好,延時(shí)也比較小的連接,丟包策略永遠(yuǎn)沒有用武之地的。而網(wǎng)絡(luò)連接比較差的用戶,因?yàn)橄螺d速度比較慢或者抖動比較大,這個(gè)用戶的延時(shí)就會越來越高;另外一種情況是,如果直播流關(guān)鍵幀間隔比較長,那么在保證首包是關(guān)鍵幀的情況下,觀看這個(gè)節(jié)目的觀眾,延遲有可能會達(dá)到一個(gè)關(guān)鍵幀序列的長度。上述兩種情況,都需要啟用丟包策略,來調(diào)整播放的延時(shí)。

關(guān)于丟包,需要解決兩個(gè)問題:一是正確判斷何時(shí)需要進(jìn)行丟包;二是如何丟包以使得對觀眾的播放體驗(yàn)影響最小。較好的做法是后端周期監(jiān)控所有連接的緩沖隊(duì)列的長度,這樣隊(duì)列長度與時(shí)間形成一個(gè)離散的函數(shù)關(guān)系,后端通過自研算法來分析這個(gè)離散函數(shù),判斷是否需要丟包。一般的丟幀策略,就是直接丟棄一個(gè)完整的視頻幀序列,這種策略看似簡單,但對用戶播放的影響體驗(yàn)非常大。而應(yīng)該是后臺采用逐步丟幀的策略,每個(gè)視頻幀序列,丟***的一到兩幀,使得用戶的感知最小,平滑的逐步縮小延時(shí)的效果。

以上就是UCloud直播云:內(nèi)容緩存與傳輸策略優(yōu)化細(xì)節(jié)原理。關(guān)于接入網(wǎng)絡(luò)優(yōu)化、直播協(xié)議選擇、終端優(yōu)化,請參閱已發(fā)布或?qū)l(fā)布的其他部分。

點(diǎn)擊閱讀:關(guān)于直播,所有的技術(shù)細(xì)節(jié)都在這里了(一)http://www.scjtxx.cn/art/201605/511219.htm

點(diǎn)擊閱讀:關(guān)于直播,所有的技術(shù)細(xì)節(jié)都在這里了(二)http://www.scjtxx.cn/art/201605/511224.htm

預(yù)告:前面介紹了直播后端系統(tǒng)的原理及優(yōu)化,那么直播推流、播放端是否有可以優(yōu)化的點(diǎn)呢?答案是肯定的,客戶端的優(yōu)化對直播秒開、延遲體驗(yàn)的實(shí)現(xiàn)至關(guān)重要,請關(guān)注的《關(guān)于直播,所有的技術(shù)細(xì)節(jié)都在這里了(四)》,我們將帶來客戶端優(yōu)化的技術(shù)細(xì)節(jié)。

責(zé)任編輯:xiejuan 來源: 51CTO
相關(guān)推薦

2016-05-20 11:26:54

客戶端優(yōu)化 直播推流

2016-05-16 12:08:08

UCloud 直播云

2016-05-16 14:00:39

UCloud 直播云

2016-05-12 14:54:39

UCloud

2017-09-19 14:55:27

Android字體修改

2017-08-28 16:40:07

Region切分觸發(fā)策略

2017-12-08 10:42:49

HBase切分細(xì)節(jié)

2018-04-26 16:15:02

數(shù)據(jù)庫MySQLMySQL 8.0

2017-10-24 14:57:58

AI人工智能機(jī)器學(xué)習(xí)

2018-03-19 14:43:28

2022-11-28 08:44:46

死鎖面試線程

2019-11-04 09:07:48

DevOps互聯(lián)網(wǎng)IT

2021-06-17 13:40:47

區(qū)塊鏈比特幣公有鏈

2021-03-11 16:07:40

鴻蒙HarmonyOS應(yīng)用開發(fā)

2019-07-21 08:10:21

技術(shù)研發(fā)優(yōu)化

2023-12-11 21:59:01

時(shí)序分析深度學(xué)習(xí)自回歸模型

2021-10-06 16:21:32

類型對象Typescript

2021-06-18 10:45:29

Java內(nèi)存泄漏C++

2019-12-04 07:57:22

6G5G網(wǎng)絡(luò)

2022-03-02 10:36:37

Linux性能優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號