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