怎么測(cè)試ZLMediaKit的延時(shí)俱萍?

引言

有些小伙伴們經(jīng)常在群里面問我,為什么用ZLMediaKit拉流代理告丢、推流轉(zhuǎn)發(fā)的流播放延時(shí)好幾秒枪蘑,長(zhǎng)的時(shí)候10多秒?為什么HLS延時(shí)更高岖免,動(dòng)輒延時(shí)半分鐘岳颇?本文的目的在于澄清大家對(duì)延時(shí)的誤解。

什么是延時(shí)

很多小伙伴們并不能明白什么叫延時(shí)颅湘,認(rèn)為隨便一個(gè)播放器播放出來的畫面跟原始流畫面時(shí)間差就是延時(shí)话侧,其實(shí)這是對(duì)延時(shí)最大的誤解。
延時(shí)不是表象闯参,很多人在測(cè)試延時(shí)時(shí)很不專業(yè)瞻鹏,對(duì)延時(shí)測(cè)試的專業(yè)性認(rèn)識(shí)不足,在此我特別提醒鹿寨,不是隨隨便便的播放器都有資格做延時(shí)測(cè)試的!

總而延時(shí)新博,一般整個(gè)延時(shí)有以下幾部分累加組成:

  • 采集延時(shí)

在采集攝像頭或顯卡畫面時(shí),由于fps的限制和cpu性能脚草、內(nèi)存拷貝速度等客觀限制赫悄,采集畫面成YUV/RGB等數(shù)據(jù)時(shí)會(huì)有一定的延時(shí),一般延時(shí)為毫秒級(jí)別馏慨。由于一般編碼器對(duì)輸入數(shù)據(jù)格式存在限制涩蜘,譬如要求統(tǒng)一輸入YUV420P,這樣在做RGB->YUV420P轉(zhuǎn)換時(shí)熏纯,也會(huì)有轉(zhuǎn)換計(jì)算延時(shí)(這個(gè)可以通過libyuv庫來降低)同诫。總而延時(shí)樟澜,采集延時(shí)大概為毫秒級(jí)別误窖,如果fps為30叮盘,那么一般采集延時(shí)會(huì)有30毫秒以上的延時(shí),在內(nèi)存拷貝和顏色轉(zhuǎn)換時(shí)霹俺,又可能增加若干毫秒的延時(shí)柔吼。

  • 編碼延時(shí)

在把原始畫面輸入到編碼器時(shí),并不會(huì)立即輸出編碼后的數(shù)據(jù)丙唧,特別是在開啟B幀時(shí)愈魏,由于需要參考后面的P幀,那么延時(shí)會(huì)更大想际,所以延時(shí)敏感的情況下一般不開啟B幀培漏,這種情況下編碼延時(shí)應(yīng)該是毫秒級(jí)別,不是很大胡本。

  • 網(wǎng)絡(luò)上行傳輸延時(shí)

編碼后的數(shù)據(jù)牌柄,要經(jīng)過一定的協(xié)議打包才能寫入socket,然后傳輸給推流服務(wù)器或拉流代理服務(wù)器侧甫,協(xié)議打包會(huì)有一定的內(nèi)存拷貝和計(jì)算量珊佣,那么會(huì)增加延時(shí),不過這個(gè)延時(shí)很小披粟,基本忽略不計(jì)咒锻。數(shù)據(jù)在上傳到服務(wù)器時(shí),這個(gè)延時(shí)可大可小守屉,取決于網(wǎng)絡(luò)質(zhì)量虫碉。

  • 服務(wù)器轉(zhuǎn)協(xié)議延時(shí)

服務(wù)器在收到數(shù)據(jù)后,要讀socket緩存胸梆、協(xié)議解析敦捧、解復(fù)用、重新打包等操作碰镜,不過總體而言兢卵,這個(gè)延時(shí)比較小,基本沒什么影響绪颖。有時(shí)秽荤,服務(wù)器為了提高性能,會(huì)采取合并寫的機(jī)制柠横,也就是收到一定量的數(shù)據(jù)后才會(huì)一并轉(zhuǎn)發(fā)窃款,這個(gè)延時(shí)一般為幾百毫秒,ZLMediaKit默認(rèn)300毫秒左右牍氛,不過ZLMediaKit默認(rèn)關(guān)閉合并寫晨继,也就是這個(gè)延時(shí)也很小。

  • 網(wǎng)絡(luò)下行延時(shí)

流媒體在把視頻數(shù)據(jù)轉(zhuǎn)發(fā)給播放器時(shí)搬俊,會(huì)存在網(wǎng)絡(luò)發(fā)送紊扬,這個(gè)延時(shí)大小取決于網(wǎng)絡(luò)質(zhì)量蜒茄,ZLMediaKit在關(guān)閉低延時(shí)模式時(shí),還會(huì)增加MSG_MORE和關(guān)閉TCP_NODELAY導(dǎo)致的延時(shí)餐屎,不過ZLMediaKit默認(rèn)開啟低延時(shí)模式檀葛。

  • 播放器延時(shí)

播放器延時(shí)主要有網(wǎng)路接收延時(shí)、協(xié)議解析解復(fù)用延時(shí)腹缩、解碼延時(shí)屿聋、緩存延時(shí)、渲染延時(shí)組成藏鹊,這些延時(shí)中緩存延時(shí)最大润讥,因?yàn)橐话愕牟シ牌鳛榱吮WC在網(wǎng)絡(luò)抖動(dòng)情況下視頻播放的流暢性,會(huì)以增加延時(shí)為代價(jià)伙判,增加播放緩存象对,這樣在網(wǎng)絡(luò)變差時(shí)黑忱,不至于播放緩沖卡頓宴抚。而且為了音視頻同步,也必須確保一定的緩存量甫煞。這種延時(shí)一般都是秒級(jí)別菇曲,一般5秒左右。

  • 播放器GOP緩存延時(shí)

流媒體服務(wù)器為了能讓播放器立即出畫面抚吠,往往會(huì)緩存最近的一個(gè)I幀常潮,這個(gè)I幀往后的所有音視頻數(shù)據(jù)被稱作為GOP緩存。如果不緩存GOP楷力,那么播放器要等下一個(gè)I幀才能解碼成功或不花屏喊式,顯然為了提高播放體驗(yàn),這個(gè)GOP緩存是不能去掉的萧朝。而一般GOP短則1~3秒岔留,長(zhǎng)則10幾秒,這個(gè)跟采集端編碼器設(shè)置有關(guān)检柬,服務(wù)器改變不了献联。但是由于一般的播放器收到緩存后,并不會(huì)丟棄過多的畫面來確保低延時(shí)何址。況且播放器還希望有一定的緩存來確保播放的流暢性里逆,所以這個(gè)GOP緩存將會(huì)增大播放器的延時(shí)。

  • 綜合延時(shí)

以上所有的延時(shí)累加用爪,就是你觀看到的直觀延時(shí)原押,那么你看到的延時(shí)很高,能怪是服務(wù)器的問題嗎偎血?在理想的網(wǎng)絡(luò)狀況下班眯,你觀看到的直觀延時(shí)希停,其實(shí)約等于播放器的播放緩存延時(shí),這個(gè)鍋得由播放器來背署隘。

怎么測(cè)試延時(shí)

用vlc等通用播放器測(cè)試延時(shí)是很不專業(yè)的宠能,這些播放器延時(shí)最少是秒級(jí)別的,為了播放流暢度和音視頻同步磁餐,這些播放器是不可能給你真實(shí)的延時(shí)數(shù)據(jù)违崇。

在此,我強(qiáng)烈推薦大家自己寫個(gè)無緩存的播放器測(cè)試延時(shí)诊霹,但是這顯然超過了大部人的能力羞延,所以ZLMediaKit提供了一個(gè)簡(jiǎn)單的播放器測(cè)試延時(shí):
test_player

什么? 你告訴我你不會(huì)編譯ZLMediaKit脾还? 那好伴箩,退而求其次,我推薦你用ffplay測(cè)試:

ffplay -i rtmp://xxxxxxx -fflags nobuffer

如果你不知道ffplay怎么安裝鄙漏,你可以從這里下載編譯好的.

關(guān)于延時(shí)的更多信息

直播延時(shí)的本質(zhì)

延時(shí)相關(guān)測(cè)試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嗤谚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怔蚌,更是在濱河造成了極大的恐慌巩步,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桦踊,死亡現(xiàn)場(chǎng)離奇詭異椅野,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)籍胯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門竟闪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杖狼,你說我怎么就攤上這事炼蛤。” “怎么了本刽?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵鲸湃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我子寓,道長(zhǎng)暗挑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任斜友,我火速辦了婚禮炸裆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鲜屏。我一直安慰自己烹看,他們只是感情好国拇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惯殊,像睡著了一般酱吝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上土思,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天务热,我揣著相機(jī)與錄音,去河邊找鬼己儒。 笑死崎岂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闪湾。 我是一名探鬼主播冲甘,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼途样!你這毒婦竟也來了江醇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤娘纷,失蹤者是張志新(化名)和其女友劉穎嫁审,沒想到半個(gè)月后跋炕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赖晶,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年辐烂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遏插。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纠修,死狀恐怖胳嘲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扣草,我是刑警寧澤了牛,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站辰妙,受9級(jí)特大地震影響鹰祸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜密浑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一蛙婴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尔破,春花似錦街图、人聲如沸浇衬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耘擂。三九已至,卻和暖如春絮姆,著一層夾襖步出監(jiān)牢的瞬間梳星,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工滚朵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冤灾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓辕近,卻偏偏與公主長(zhǎng)得像韵吨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子移宅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容