當你和朋友利用直播軟件進行語音或視頻聊天時,這時突然畫面卡住不動了,而且聲音變得斷斷續續,是不是會感到特別的尷尬?為了避免這些情況,那么在直播系統源碼開發過程中,針對于延遲這個令人頭疼的問題,能在哪些方面進行優化呢?下面就來給大家簡單介紹下。

一、編碼環節
首先,在編碼過程中,確保在編碼譯碼器(Codec)開啟了最低延遲的設置。編碼譯碼器一般都會有低延遲優化的開關,對于H.264來說,其優化效果尤其明顯。另外,編碼譯碼器一般都會有碼控造成的延遲,如果把它當成編碼器和解碼器比特流之間的緩存,在不影響視頻質量的情況下,并將其設置得盡可能小的話,也能夠降低延遲。還有,最好不要使用視頻MJPEG的視頻壓縮格式,至少使用不帶B幀的MPEG4視頻壓縮格式,最好使用像H.264baseline profile的編碼。這樣的話可以有效的降低延遲,因為它能夠以更低的碼率編碼全幀率視頻。
二、傳輸協議
簡單來說,就是在服務端節點和節點之間盡量使用RTMP而非HLS協議進行傳輸,這樣可以降低整體的傳輸延遲。如果終端用戶使用RTMP來播放,盡量在靠近推流端的收流節點進行轉碼,這樣傳輸的視頻流要比原始視頻流更小。此外,如果有必要,可以使用定制的UDP協議來替換TCP協議,省去弱網環節下的丟包重傳也可以降低延遲。

三、傳輸網絡
在直播系統源碼開發過程中,于服務器節點中緩存當前GOP,并配合播放端優化視頻首開時間。還可以讓服務端實時記錄每個視頻流流向每個環節時的秒級幀率和碼率,用于實時監控碼率和幀率的波動,然后針對此情況進行技術調節即可。
四、推流、播放優化
播放端緩存控制對于視頻的首開延遲也有較大影響,如果僅優化首開延遲,可以在零緩存情況下在數據到達的時候立即解碼。但如果在弱網環境下為了消除網絡抖動造成的影響,那么設置一定的緩存也有必要,因此需要在直播的穩定性和首開延遲優化上找到平衡,從而調整優化緩沖區大小值。除了動態調整buffer大小的策略之外,也可以利用實時監測的網絡信息來動態調整播放過程中的碼率,在網絡帶寬不足的情況下降低碼率進行播放,減少延遲。
以上就是在直播系統源碼開發中,針對延遲方面,在技術層面所能做的優化。如果您對直播系統開發感興趣的話,歡迎咨詢官方客服。
粵ICP備17073043號