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