本文是 《直播疑難雜症排查》系列的第四篇文章,我們來看看直播的延時問題。
1. 延時的測量
2. 延時高問題分析
首先,我們看看可能產生延時的模組有哪些:
- 影象處理延時,比如畫面剪裁、美顏、特效處理
- 網路傳輸的延時
- 業務**中的緩衝區
一般影象處理、資料拷貝、編譯碼帶來的延時,都是 ms 級別的,真正會產生比較大延時的地方,乙個是網際網路上的網路傳輸延時,另乙個就是業務**中的緩衝區了。
2.1 網路傳輸延時
資料在網路上傳輸,從乙個節點經過多級伺服器**到達另乙個節點,是不可避免有物理延時的,下面這個**給出了理論上資料在光纖中的網路傳輸的時間(實際場景中的延時往往比這個要大很多,因為涉及到頻寬、網路抖動等干擾):
2.2 業務**中的緩衝區
- 推流端的資料是怎麼 「積累」 起來的 ?
採集 -> 編碼 -> 資料傳送 -> [伺服器]
當網路產生抖動的時候,「資料傳送」 會因此減慢,產生一定的阻塞,從而導致這些資料會被 「積累」 在了推流端的傳送緩衝區中。
[伺服器]-> 資料接收 -> 解碼 -> 渲染
- 怎麼消除業務緩衝區的累積延時呢 ?
推流端的傳送緩衝區,可以在網路恢復良好的時候,快送傳送出去,從而消除掉這個累積延時。
2.3 協議延時
通常標準的直播協議有 rtmp,hlv,hls 三種,一般 rtmp/hlv 協議的延時在 1~3s,hls 協議的直播延時則會更大,注重延時的直播應用,大都會選擇 rtmp/hlv 協議,這些協議均是基於 tcp 的協議,tcp 協議的多個特性導致其延時明顯要高於基於 udp 的私有協議,主要有如下方面:
- 建立連線的三次握手
- ack 機制
- 丟包重傳
因此,如果想從本質上解決直播延時問題,還是要換成基於 udp 的私有協議來傳輸資料。
3. 小結
直播疑難雜症排查(10) 直播功耗高
1.問題現象 直播過程中手機發熱嚴重,耗電快。2.問題排查 導致手機功耗高,發熱嚴重的根本因素,無外乎就是一點 cpu gpu 佔用率高,所以,我們首先要分析下,哪些因素會導致 cpu gpu 佔用率高。2.1 資料量太大 在這整個流程中,決定資料量大小的因素有哪些呢 2.2 大量的格式轉換 我們要...
直播疑難雜症排查 序
在七牛做直播 sdk 一年多了,幫助客戶解決過各種形形 的問題,如直播卡頓 馬賽克 花屏 黑屏 雜音 音畫不同步等等等等,這其中,有一些是網路原因,有一些是客戶的使用姿勢問題,有一些是引數配置錯誤,當然,也有一些是 sdk 本身的問題。總結下來,如果開發者能夠對直播領域的一些基礎知識有更深入的了解,...
Hadoop疑難雜症
前天安裝了pig,本來寫了條pig latin,但一直卡在 17 05 07 17 47 07 info mapreduce.job running job job 1494150363568 0001跑不通,想著肯定是mapredcue自身有問題,於是開始了艱苦的檢錯之旅,從csdn到stackf...