直播開發(fā)APP,緩存策略是平臺應對突發(fā)情況的最終手段
直播開發(fā)APP會面臨延遲、卡頓、丟幀、音畫不同步等各種各樣的突發(fā)情況,不論是服務器也好、網絡增速也好,能對平臺起到增益效果的方式直播開發(fā)APP都在嘗試,其中緩存策略做為有效方式脫穎而出,針對視頻關鍵幀的緩存,能對直播的延遲以及其他方面起到非常大的效果,而且也成為直播平臺對抗突發(fā)情況的最終手段。
?

一、直播開發(fā)APP延遲與卡頓的方案選擇
直播的延遲與卡頓是分析直播業(yè)務質量時,非常關注的兩項指標,然而,這兩項指標從理論上來說,是一對矛盾的關系,需要更迭延遲,則表明服務器端和播放端的緩沖區(qū)都必須更短,來自網絡的異常抖動容易引起卡頓;業(yè)務可以接受較高的延遲,服務端和播放端都可以有較長的緩沖區(qū),以應對來自網絡的抖動,提供更流暢的直播體驗。所以我們需要在延遲與卡頓中選擇一個折中的方案。
?

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

二、直播開發(fā)APP丟包解決
直播開發(fā)APP什么時候會造成丟包?對于一個網絡連接很好,延時也比較小的連接,丟包策略永遠沒有用武之地的。而網絡連接比較差的用戶,因為下載速度比較慢或者抖動比較大,這個用戶的延時就會越來越高。另外一種情況是,如果直播流關鍵幀間隔比較長,那么在保證首包是關鍵幀的情況下,觀看這個節(jié)目的觀眾,延遲有可能會達到一個關鍵幀序列的長度。上述兩種情況,都需要啟用丟包策略,來調整播放的延時。 丟包的解決方案: 一是正確判斷何時需要進行丟包; 二是如何丟包以使得對觀眾的播放體驗影響最小。較好的做法是在直播開發(fā)APP后端周期監(jiān)控所有連接的緩沖隊列的長度,這樣隊列長度與時間形成一個離散的函數關系,后端通過自研算法來分析這個離散函數,判斷是否需要丟包。 直播開發(fā)APP在使用丟包策略的時候為了給用戶更好的體,而應該是后臺采用逐步丟幀的策略,每個視頻幀序列,丟最后的一到兩幀,使得用戶的感知最小,平滑的逐步縮小延時的效果。
聲明:以上內容為云豹科技作者本人原創(chuàng),未經作者本人同意,禁止轉載,否則將追究相關法律責任