常言道“巧干能捕雄獅,蠻干難捉蟋蟀。”即做事需要講究方法不要蠻干,這個道理在開發直播軟件系統的過程中也同樣適用。我們都知道延時對于直播app來說就等于“致命傷害”,如果不克服這一點就無法在浩浩蕩蕩的互聯網大軍中生存。于是為了應對這一問題,我們可以簡單總結一下關于低延遲優化方面的幾點技巧。
1.傳輸協議的優化
如果終端的用戶使用RTMP協議播放,就需要去靠近推流端的節點進行轉碼,這樣一來傳輸的視頻流就會比原始的視頻流更小一些。在服務端的節點之間盡量使用RTMP進行傳輸,可以降低整體的傳輸延遲。有必要的話還可以使用定制的UDP協議,以避免弱網環境下的丟包重傳,從而降低延遲。但是這一協議的缺點有兩個:一個是容易出現丟包導致的花瓶或缺少關鍵幀的解碼參考,另一個是視頻流的傳輸和分發不通用。市面上的CDN廠商支持的都是標準的傳輸協議,所以就需要定制UDP協議的一方在UDP的基礎上做好丟包控制。
?
2.推流中播放的優化
播放端的緩存控制對視頻的首開延遲有較大的影響,如果僅僅只優化首開延遲的話,就需要在零緩存的情況下,在數據到達之后就立即進行解碼。但是如果為了消除在弱網環境下網絡抖動所造成的影響,就需要設置一定的緩存然后在直播的穩定性和首開延遲優化之間找到平衡點。所以我們可以在播放器開啟時采用非常小或者是零緩存的方法,通過下載首片視頻的耗時決定下一個時間片段的緩存大小,還可以同時在播放過程中實時監測當前網絡并調整播放過程中的緩存大小。這一方法不僅可以降低首開的時間還可以極大程度的消除網絡抖動所造成的影響。除了調整緩沖器的大小,還可以利用實時監測的網絡信息去動態調整播放過程中的碼率,然后在帶寬不足的情況下降低碼率播放,減少延遲。
3.傳輸網絡的優化
開發直播軟件系統時,服務端的節點中會緩存當前的GOP然后配合播放端優化視頻的首開時間。大部分的服務端都會實時記錄每個視頻流所流向每個環節時的碼率和幀率,從而實時監控碼率和幀率的波動情況,客戶端可以通過查詢獲取當前最有節點和出現故障的節點或線路。
?
4.編碼的優化
編碼器通常會有碼控造成延遲,所以在不影響視頻質量的情況下可以把碼率設置的小一點降低延遲。而固定碼率編碼CBR能在一定程度上消除網絡抖動的影響,并節省網絡帶寬降低延遲。
開發直播軟件系統時需要在不影響用戶使用體驗的情況下做到低延遲,所以在優化直播過程中的延遲問題也是需要不同技巧的。無論是哪一種技巧,最終目的都是為了提升用戶使用體驗,增加用戶黏性從而得到長久發展。
?
電子發燒友App

































































評論