RTMP直播應用與延時分析

2021-08-03 18:09:09 字數 2228 閱讀 3001

直播應用中,rtmp和hls基本上可以覆蓋所有客戶端**,

hls主要是延時比較大,rtmp主要優勢在於延時低。

低延時應用場景包括:

.  互動式直播:譬如2023年大行其道的美女主播,遊戲直播等等

各種主播,流**分發給使用者**。使用者可以文字聊天和主播互動。

其實會議1秒延時無所謂,因為人家講完話後,其他人需要思考,

.  其他:監控,直播也有些地方需要對延遲有要求,

網際網路上rtmp協議的延遲基本上能夠滿足要求。

1) adobe支援得很好:

rtmp實際上是現在編碼器輸出的工業標準協議,基本上所有的編碼器(攝像頭之類)都支援rtmp輸出。

原因在於pc市場巨大,pc主要是windows,windows的瀏覽器基本上都支援flash,

flash又支援rtmp支援得非常好。

對於商用流**應用,客戶端的穩定性當然也是必須的,否則終端使用者看不了還怎麼玩?

該客戶走rtmp方案後,經過cdn分發,沒聽說客戶端出問題了。

3)延遲較低:

比起yy的那種udp私有協議,rtmp算延遲大的(延遲在1-3秒),

比起http流的延時(一般在10秒以上)rtmp算低延時。

一般的直播應用,只要不是**類對話的那種要求,rtmp延遲是可以接受的。

實際上1秒延時沒有關係,我們也要思考(話說有些人的cpu處理速度還沒有這麼快)。

4) 有累積延遲:

技術一定要知道弱點,rtmp有個弱點就是累積誤差,原因是rtmp基於tcp不會丟包。

所以當網路狀態差時,伺服器會將包快取起來,導致累積的延遲;

待網路狀況好了,就一起發給客戶端。

這個的對策就是,當客戶端的緩衝區很大,就斷開重連。

主要有人老是問這個問題,如何降低hls延遲。

hls解決延時,就像是爬到楓樹上去捉魚,奇怪的是還有人喊,看那,有魚。

你說是怎麼回事?

我只能說你在參與謙哥的魔術表演,錯覺罷了。

如果你真的確信有,請用實際測量的來展示出來,參考下面延遲的測量。

如何測量延時,是個很難的問題,

不過有個行之有效的方法,就是用手機的秒錶,可以比較精確的對比延時。

經過測量發現,在網路狀況良好時:

. rtmp延時可以做到0.8秒左右。

. 多級邊緣節點不會影響延遲(和srs同源的某cdn的邊緣伺服器可以做到)

. nginx-rtmp延遲有點大,估計是快取的處理,多程序通訊導致?

. gop是個硬指標,不過srs可以關閉gop的cache來避免這個影響.

. 伺服器效能太低,也會導致延遲變大,伺服器來不及傳送資料。

. 客戶端的緩衝區長度也影響延遲。

譬如flash客戶端的netstream.buffertime設定為10秒,那麼延遲至少10秒以上。

gop有什麼影響?

也就是說,伺服器一般先給乙個i幀給flash。

可惜問題來了,假設gop是10秒,也就是每隔10秒才有關鍵幀,

第一種方案:等待下乙個i幀,

也就是說,再等5秒才開始給客戶端資料。

這樣延遲就很低了,總是實時的流。

有些使用者可能以為死掉了,就會重新整理頁面。

總之,某些客戶會認為等待關鍵幀是個不可饒恕的錯誤,延時有什麼關係?

第二種方案:馬上開始放,

放什麼呢?

你肯定知道了,放前乙個i幀。

也就是說,伺服器需要總是cache乙個gop,

問題是:延遲自然就大了。

有沒有好的方案?

有!至少有兩種:

編碼器調低gop,譬如0.5秒乙個gop,這樣延遲也很低,也不用等待。

壞處是編碼器壓縮率會降低,影象質量沒有那麼好。

除了gop-cache,還有乙個有關係,就是累積延遲。

伺服器可以配置直播佇列的長度,伺服器會將資料放在直播佇列中,

如果超過這個長度就清空到最後乙個i幀:

當然這個不能配置太小,

譬如gop是1秒,queue_length是1秒,這樣會導致有1秒資料就清空,會導致跳躍。

有更好的方法?有的。

延遲基本上就等於客戶端的緩衝區長度,因為延遲大多由於網路頻寬低,

伺服器快取後一起發給客戶端,現象就是客戶端的緩衝區變大了,

譬如netstream.bufferlength=5秒,那麼說明緩衝區中至少有5秒資料。

處理累積延遲的最好方法,是客戶端檢測到緩衝區有很多資料了,如果可以的話,就重連伺服器。

當然如果網路一直不好,那就沒有辦法了。

RTMP直播應用與延時分析

直播應用中,rtmp和hls基本上可以覆蓋所有客戶端 hls主要是延時比較大,rtmp主要優勢在於延時低。低延時應用場景包括 互動式直播 譬如2013年大行其道的美女主播,遊戲直播等等 各種主播,流 分發給使用者 使用者可以文字聊天和主播互動。其實會議1秒延時無所謂,因為人家講完話後,其他人需要思考...

RTMP直播應用與延時分析

直播應用中,rtmp和hls基本上可以覆蓋所有客戶端 hls主要是延時比較大,rtmp主要優勢在於延時低。低延時應用場景包括 互動式直播 譬如2013年大行其道的美女主播,遊戲直播等等 各種主播,流 分發給使用者 使用者可以文字聊天和主播互動。其實會議1秒延時無所謂,因為人家講完話後,其他人需要思考...

RTMP直播應用與延時分析

直播應用中,rtmp和hls基本上可以覆蓋所有客戶端 hls主要是延時比較大,rtmp主要優勢在於延時低。低延時應用場景包括 互動式直播 譬如2013年大行其道的美女主播,遊戲直播等等 各種主播,流 分發給使用者 使用者可以文字聊天和主播互動。其實會議1秒延時無所謂,因為人家講完話後,其他人需要思考...