天天看點

細數一對一社交源碼調和延時卡頓問題的小技巧

一對一社交源碼作為開發過程中的“基礎成員”,不僅開發搭建需要用到它,而且在解決延時和卡頓方面出現的問題也會用到它。雖然源碼看起來并不起眼,但是系統搭建起來,再到後期app功能的實作都少不了源碼“出力”。當然,如果源碼的品質不高,那麼後期的app成品在運作方面效果也不會太好。是以,優質的源碼可以解決很多問題,接下來就跟大家簡單分享一下延時卡頓方面的問題。

     先來科普一下相關的基礎知識,關于I幀、B幀、P幀的知識。

I幀:表示關鍵幀,解碼時隻需要本幀資料就可以完成。

B幀:表示雙向差别幀,B幀記錄的是本幀與前後幀的差别。換句話說,要解碼B幀,不僅需要取得之前的緩存畫面,還要解碼之後的畫面,通過前後畫面的與本幀資料的疊加取得最終畫面。但是編解碼時會比較耗費CPU,而且在直播中可能會增加直播延時,是以在移動端一般不使用B幀。

P幀:表示這一幀和之前關鍵幀的差别。解碼時需要用到之前緩存的畫面疊加上本幀定義的差别,生成最終畫面。

     對于直播來講,延時是非常需要注意的問題之一。那麼為了減少直播的延時,通常在編碼時不使用B幀。P幀B幀對于I幀都有着直接或者間接的依賴關系,是以播放器要解碼一個視訊幀序列并且進行播放,就必須先解碼出I幀,然後B幀和P幀才能進行解碼。是以在服務端進行關鍵幀的緩存,對直播的延時和其他方面都有着很大的影響。通常可以按照業務需求緩存幀序列,保持在緩存中存儲至少兩個及以上的關鍵幀,進而應對低延時、防卡頓等需求。

細數一對一社交源碼調和延時卡頓問題的小技巧

一般我們在分析一個直播app的好與壞,延時和卡頓是首要關注的兩項名額。從理論上來講,如果需要低延時,那麼伺服器端和播放器端的緩沖區都必須更短。而來自網絡的異常抖動通常會容易引起卡頓,當業務可以接受較高的延時,服務端和播放端都可以有較長的緩沖區進而應對來自網絡的抖動,進而提供更加流暢的直播體驗。對于網絡環境好的使用者,這兩項名額是可以同時保證的,但是對于網絡環境不好的使用者,又該如何解決延時和卡頓的問題呢?

可以從以下兩個方面來進行優化:

1.     

服務端提供靈活的配置政策,對于延時要求比較敏感的,可以在服務端保證關鍵幀的情況下,對每個連接配接維持一個較小的緩沖隊列。對卡頓要求較高的直播場景,可以适當增加緩沖隊列的長度,來保證直播播放的流暢性。

2.     

可以對所有連接配接的網絡情況進行一個智能檢測,當網絡狀況良好時,服務端會縮小緩沖隊列的大小,進而降低延遲。當網絡狀況較差時,服務端會增加緩沖隊列的長度并且優先保證直播播放的流暢性。

    以上就是一對一社交源碼在開發過程中解決延時和卡頓問題的小技巧,這也是我們經常提到的“一分價錢一分貨”,優質的源碼建構成的直播系統肯定出現問題的頻率也比較少,是以在源碼的選擇上優先去選擇優質源碼還是十分必要的。