直播間新手常見技術(shù)問題解答--延時高
延時高問題分析
我們看看可能產(chǎn)生延時的模塊有哪些:
1)圖像處理延時,比如畫面剪裁、美顏、特效處理
2)視頻編碼/解碼延時
3)網(wǎng)絡傳輸?shù)难訒r
4)業(yè)務代碼中的緩沖區(qū)
一般圖像處理、數(shù)據(jù)拷貝、編解碼帶來的延時,都是 ms 級別的,真正會產(chǎn)生比較大延時的地方,一個是互聯(lián)網(wǎng)上的網(wǎng)絡傳輸延時,另一個就是業(yè)務代碼中的緩沖區(qū)了。
1 編碼延時
很多人可能不知道 H.264 的解碼器正常情況下會在顯示之前緩存一定的視頻幀,對于 QCIF 分辨率大小的視頻(176 × 144)一般會緩存 16 幀,對于 720P 的視頻則緩存 5 幀。對于第一幀的讀取來說,這是一個很大的延遲。
視頻中 B 幀的解碼依賴于前后的視頻幀,會增加延遲。Codec 一般都會有低延遲優(yōu)化的開關(guān),對于 H.264 來說其效果尤其明顯。
如果使用了 FFmpeg,降低「-probesize 」和「 -analyze duration」參數(shù)的值,這兩個值用于視頻幀信息監(jiān)測和用于監(jiān)測的時長,這兩個值越大對編碼延遲的影響越大。
網(wǎng)絡傳輸延時
數(shù)據(jù)在網(wǎng)絡上傳輸,從一個節(jié)點經(jīng)過多級服務器轉(zhuǎn)發(fā)到達另一個節(jié)點,是不可避免有物理延時的,下面這個表格給出了理論上數(shù)據(jù)在光纖中的網(wǎng)絡傳輸?shù)臅r間(實際場景中的延時往往比這個要大很多,因為涉及到帶寬、網(wǎng)絡抖動等干擾):
業(yè)務代碼中的緩沖區(qū)
業(yè)務代碼中的緩沖區(qū),主要是推流端的緩沖區(qū)和播放端的緩沖區(qū),一個 30 fps 的視頻流,緩沖區(qū)每滯留 30 幀,延時就會增大 1s,
那么,它們是怎么產(chǎn)生緩沖數(shù)據(jù)的呢 ?
推流端的數(shù)據(jù)怎么積累起來的呢 ?
采集 -> 編碼 -> 數(shù)據(jù)發(fā)送 -> 服務器
當網(wǎng)絡產(chǎn)生抖動的時候,數(shù)據(jù)發(fā)送會因此減慢,產(chǎn)生一定的阻塞,從而導致這些數(shù)據(jù)會被積累在了推流端的發(fā)送緩沖區(qū)中。
播放端的數(shù)據(jù)怎么積累起來的呢 ?
服務器-> 數(shù)據(jù)接收 -> 解碼 -> 渲染
當網(wǎng)絡產(chǎn)生抖動的時候,服務器的數(shù)據(jù)無法及時地傳輸?shù)讲シ哦耍捎?TCP 協(xié)議的可靠性,所有的數(shù)據(jù)都會被服務端積累起來,在網(wǎng)絡恢復良好的時候,會快速傳輸?shù)讲シ哦耍@些數(shù)據(jù)會被動地積累在接收緩沖區(qū)中。
怎么消除業(yè)務緩沖區(qū)的累計延時呢 ?
推流端的發(fā)送緩沖區(qū),可以在網(wǎng)絡恢復良好的時候,快送發(fā)送出去,從而消除掉這個累計延時。
播放端的接收緩沖區(qū),可以通過丟幀或者加速播放的方式快速消費掉緩沖區(qū)中的數(shù)據(jù),從而消除累計延時。
協(xié)議延時
通常標準的直播協(xié)議有 RTMP,HLV,HLS 三種,一般 RTMP/HLV 協(xié)議的延時在 1~3s,HLS 協(xié)議的直播延時則會更大,注重延時的直播應用,大都會選擇 RTMP/HLV 協(xié)議,這些協(xié)議均是基于 tcp 的協(xié)議,tcp 協(xié)議的多個特性導致其延時明顯要高于基于 udp 的私有協(xié)議,主要有如下方面:
? 建立連接的三次握手
? ACK 機制
? 丟包重傳
因此,如果想從本質(zhì)上解決直播延時問題,還是要換成基于 udp 的私有協(xié)議來傳輸數(shù)據(jù)。
————————————————
版權(quán)聲明:本文為CSDN博主「步基」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wangbuji/article/details/121661187
================================
【新聞】
中國e直播帶貨供應鏈金融13306003307(V同),
一件代發(fā)共享云倉:主播減去了自己先采購囤貨的問題,可以無壓力的開播賣貨。主播只要選定生廠商的抖音小店產(chǎn)品鏈接或快手小店產(chǎn)品鏈接,在自己直播間上了鏈接就可以賣,賣完由廠家小店訂單結(jié)算,廠家網(wǎng)店直接收款;直播帶貨主播直接分傭金;MCN機構(gòu)直接分管理費。
中國E直播帶貨供應鏈機構(gòu)協(xié)調(diào)廠家按規(guī)則48小時內(nèi)一件代發(fā)!