如何降低延時?
按正常情況,RTMP 推流 + FLV 播放的正常延遲在 2-3s 左右,如果太長則是有問題的。如果您發(fā)現(xiàn)直播延遲時間特別長,可按照如下思路來排查:
以下方法僅適用于 RTMP 與 FLV
阿里云提供 FLV、HLS、RTMP 三種播放協(xié)議,不少用戶采用 HLS 的播放協(xié)議。HLS 是蘋果研發(fā)的協(xié)議,對瀏覽器兼容較好,并且跨終端的支持。是很多用戶的首選。但是 HLS 本身機制的問題,是基于大顆粒的 TS 分片的流媒體協(xié)議,每個分片都有 5s 以上的時長,分片數(shù)量一般為 3-4 個,所以總延遲在 20-30s 左右。很多用戶通過設(shè)置 TS 切片的時間來減少延時,雖然能有效的減少一些延時,但基于協(xié)議本身的特性也無法像 rtmp 與 flv 協(xié)議一樣將延遲降低到很低。
GOP 幀設(shè)置
GOP 幀是視頻的關(guān)鍵幀,是一組連續(xù)的畫面,由一張 I 幀和數(shù)張 B / P 幀組成,是視頻圖像編碼器和解碼器存取的基本單位,它的排列順序?qū)恢敝貜?fù)到影像結(jié)束。直播會將每一幀數(shù)據(jù)打上時序標(biāo)簽后進行在網(wǎng)絡(luò)上進行傳輸,減少 GOP 幀的數(shù)量,減少播放器加載 GOP 幀所用的時間。一般情況下設(shè)置為 1-2s。
服務(wù)器緩存設(shè)置
一般情況服務(wù)器會先緩存一部分直播數(shù)據(jù),再將數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至終端。這樣能保證數(shù)據(jù)傳輸?shù)牧鲿承裕芯彺鏀?shù)據(jù)也就會造成一定的直播延時,對直播要求較高的場景就會要求將緩存調(diào)小以達到較小的延遲。
當(dāng)然,相對應(yīng)的緩存越小,當(dāng)網(wǎng)絡(luò)環(huán)境不好時,數(shù)據(jù)無法及時的下載,就會出現(xiàn)卡頓的現(xiàn)象。
確認使用的播放協(xié)議
不少用戶播放協(xié)議采用 HLS(m3u8),并感覺延遲較大,這是正常的。蘋果主推的 HLS 是基于 TS 分片文件的流媒體協(xié)議,每個分片都有 5s 以上的時長,分片數(shù)量一般為 3-4 個,所以總延遲基本都在在 20-30s。
換用 FLV 作為播放協(xié)議即可解決這個問題。但是要注意,如果您要在手機瀏覽器上觀看直播視頻,只有 HLS (m3u8) 這一種播放協(xié)議可以選擇,其它的直播協(xié)議在蘋果的 Safari 瀏覽器上都是不支持的。
知識戶播放協(xié)議采用 HLS(m3u8)
大家在使用過程中遇到問題,歡迎跟帖反饋,本貼持續(xù)更新……