本文介紹如何解決查直播延遲長的問題。
造成直播延遲的原因
推流端
GOP(Group Of Picture)幀是視頻的主要畫面格,是視頻映像編碼器和解碼器存取的基本單位。直播會將每一幀資料打上時序標籤,並進行網路傳輸。視頻的主要畫面格數量過大會造成直播延遲。
多數第三方推流軟體為解決卡頓問題會採用增大編碼緩衝的方法,而編碼緩衝過大,則會造成直播延遲。
由於硬體條件限制,無法滿足編碼端碼率、幀率以及編碼的高檔位設定需求,造成編碼延遲影響直播。
服務端
在視頻播放前,為了保證直播秒開以及降低卡頓,會先緩衝部分直播資料,這樣能保證資料的流暢性,但快取資料會造成一定的直播延遲;在視頻播放中,由於網路抖動可能導致資料無法傳送到用戶端,因此會造成2秒~3秒的延遲。
播流端
多數不支援快進的播流端都是在接收緩衝收滿後才進行解碼直播,而這部分接收的緩衝會導致直播延遲。
如何降低直播延遲
您可通過以下配置來降低直播延遲:
推流端配置
將GOP幀設定為1秒~2秒,減少播放器載入GOP幀所用的時間來降低直播延遲。控制台GOP設定,請參見自訂轉碼;API介面配置,請參見添加自訂轉碼配置資訊。
由於編碼緩衝過大引起的直播延遲,建議您使用阿里雲推流SDK降低延遲。
對於推流裝置的使用,推流iOS端建議您使用寫入程式碼,其效率高且省電;Android端因機型複雜,CPU類型眾多,採用寫入程式碼可能出現相容性問題,推流Android端建議您使用軟編碼。
服務端配置
將服務端緩衝調小,來降低直播延遲。您可通過控制台進行直播延遲配置,根據不同的播流協議來配置延遲時間,延遲配置越低服務端緩衝越小。
在ApsaraVideo for Live控制台左側導覽列,單擊推/播流網域名稱管理,進入網域名稱管理頁面。
選擇您要配置的播流網域名稱,單擊網域名稱配置。
單擊
。
說明將緩衝調小後,當網路環境不穩定時,資料無法及時下載,會出現直播卡頓的現象。
選用播流協議
阿里雲提供HTTP-FLV 、HLS、RTMP三種播放協議,您可以根據直播情境選擇使用。
HTTP-FLV和RTMP延遲較小,適合低延遲播放的情境。HLS延遲較大但相容性好,適合對延遲不敏感但需要更多播放終端可以播放的情境。
HTTP-FLV和RTMP需要Flash播放器,HLS可以直接在瀏覽器中播放。
手機瀏覽器觀看直播視頻,僅可使用HLS播流協議。
說明如果您的播流端使用的是HLS協議,感覺延遲較高,由於HLS協議的延遲在10秒~30秒左右為正常現象,您可以將HLS協議換為FLV協議即可解決此問題。
HTTP-FLV、HLS、RTMP協議對比如下表所示:
協議名稱
協議簡介
採用的傳輸協議
視頻封裝格式
推薦直播情境
HTTP-FLV
由Adobe公司推出,將流媒體資料封裝成FLV格式,通過HTTP協議傳輸給用戶端,延遲約2秒。支援使用HTTPS加密傳輸,支援Android移動端。
HTTP
FLV、TAG
降低延遲
HLS
由Apple公司推出,基於HTTP的流媒體傳輸協議。將流媒體資料切成連續的TS分區,每個分區有5秒以上的時間長度,分區數量一般為3~4個,所以總延遲約10秒~30秒,但流暢性較好。主要應用於iOS裝置,提供音ApsaraVideo for Live服務和錄製內容等服務。
HTTP
M3U8、TS
跨終端
RTMP
由Adobe公司推出,傳輸的過程中訊息會被拆分為更小的訊息塊(Chunk)單元,再將分割後的訊息塊通過TCP協議傳輸,接收端再反解接收的訊息塊恢複成流媒體資料將大檔案拆分,因過程複雜可能導致不穩定。在iOS端,需要使用第三方解碼器才能播放。
HTTP
FLV、TAG
互動式直播
超低延時直播
如果上述方法仍未幫您降低延時,您可以嘗試使用超低延時服務RTS(Real-time Streaming)。RTS具備千萬級並發情境下的毫秒級延時直播能力,適用於較大的互動直播情境,彌補了傳統直播3秒~6秒延時的問題,保障超低延時、低卡頓、秒開流暢的直播觀看體驗。