資源描述:
《科普文:詳解音視頻直播中的低延時(shí).docx》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、音視頻實(shí)時(shí)通訊的應(yīng)用場(chǎng)景已經(jīng)隨處可見(jiàn),從“吃雞”的語(yǔ)音對(duì)講、直播連麥、直播答題組隊(duì)開(kāi)黑,再到銀行視頻開(kāi)戶(hù)等。對(duì)于開(kāi)發(fā)者來(lái)講,除了關(guān)注如何能快速實(shí)現(xiàn)不同應(yīng)用場(chǎng)景重點(diǎn)額音視頻通訊,另一個(gè)更需要關(guān)注的可能就是“低延時(shí)”。但是,到底實(shí)時(shí)音視頻傳輸延時(shí)應(yīng)該如何“低”,才能滿(mǎn)足你的應(yīng)用場(chǎng)景呢?延時(shí)的產(chǎn)生與優(yōu)化在聊低延時(shí)之前,我們先要講清延時(shí)是如何產(chǎn)生的。由于音視頻的傳輸路徑一樣,我們可以通過(guò)一張圖來(lái)說(shuō)明延時(shí)的產(chǎn)生:在音視頻傳輸過(guò)程中,在不同階段都會(huì)產(chǎn)生延時(shí)。總體可以分為三類(lèi):T1:設(shè)備端上的延時(shí)音視頻數(shù)據(jù)在設(shè)備端上產(chǎn)生延時(shí)還可以細(xì)分。設(shè)備端上的延時(shí)主要與硬件性能、采用的編解碼算
2、法、音視頻數(shù)據(jù)量相關(guān),設(shè)備端上的延時(shí)可達(dá)到30~200ms,甚至更高。如上表所示,音頻與視頻分別在采集端或播放端產(chǎn)生延時(shí)的過(guò)程基本相同,但產(chǎn)生延時(shí)的原因不同。音頻在設(shè)備端上的延時(shí):?音頻采集延時(shí):采集后的音頻首先會(huì)經(jīng)過(guò)聲卡進(jìn)行信號(hào)轉(zhuǎn)換,聲卡本身會(huì)產(chǎn)生延時(shí),比如M-Audio聲卡設(shè)備延遲1ms,艾肯聲卡設(shè)備延遲約為37ms;?編解碼延時(shí):隨后音頻進(jìn)入前處理、編碼的階段,如果采用OPUS標(biāo)準(zhǔn)編碼,最低算法延時(shí)大約需要2.5~60ms;?音頻播放延時(shí):這部分延時(shí)與播放端硬件性能相關(guān)。?音頻處理延時(shí):前后處理,包括AEC,ANS,AGC等前后處理算法都會(huì)帶來(lái)算法延時(shí),通常這
3、里的延時(shí)就是濾波器階數(shù)。在10ms以?xún)?nèi)。?端網(wǎng)絡(luò)延時(shí):這部分延時(shí)主要出現(xiàn)在解碼之前的jitterbuffer內(nèi),如果在抗丟包處理中,增加了重傳算法和前向糾錯(cuò)算法,這里的延時(shí)一般在20ms到200ms左右。但是受到j(luò)itterbuffer影響,可能會(huì)更高。?視頻在設(shè)備端上的延時(shí):?采集延時(shí):采集時(shí)會(huì)遇到成像延遲,主要由CCD相關(guān)硬件產(chǎn)生,市面上較好的CCD一秒可達(dá)50幀,成像延時(shí)約為20ms,如果是一秒20~25幀的CCD,會(huì)產(chǎn)生40~50ms的延時(shí);?編解碼延時(shí):以H.264為例,它包含I、P、B三種幀(下文會(huì)詳細(xì)分析),如果是每秒30幀相連幀,且不包括B幀(由于B
4、幀的解碼依賴(lài)前后視頻幀會(huì)增加延遲),采集的一幀數(shù)據(jù)可能直接進(jìn)入編碼器,沒(méi)有B幀時(shí),編碼的幀延時(shí)可以忽略不計(jì),但如果有B幀,會(huì)帶來(lái)算法延時(shí)。?視頻渲染延時(shí):一般情況下渲染延時(shí)非常小,但是它也會(huì)受到系統(tǒng)性能、音畫(huà)同步的影響而增大。?端網(wǎng)絡(luò)延時(shí):與音頻一樣,視頻也會(huì)遇到端網(wǎng)絡(luò)延時(shí)。?另外,在設(shè)備端,CPU、緩存通常會(huì)同時(shí)處理來(lái)自多個(gè)應(yīng)用、外接設(shè)備的請(qǐng)求,如果某個(gè)問(wèn)題設(shè)備的請(qǐng)求占用了CPU,會(huì)導(dǎo)致音視頻的處理請(qǐng)求出現(xiàn)延時(shí)。以音頻為例,當(dāng)出現(xiàn)該狀況時(shí),CPU可能無(wú)法及時(shí)填充音頻緩沖區(qū),音頻會(huì)出現(xiàn)卡頓。所以設(shè)備整體的性能,也會(huì)影響音視頻采集、編解碼與播放的延時(shí)。T2:端與服務(wù)器
5、間的延時(shí)影響采集端與服務(wù)器、服務(wù)器與播放端的延時(shí)的有以下主幾個(gè)因素:客戶(hù)端同服務(wù)間的物理距離、客戶(hù)端和服務(wù)器的網(wǎng)絡(luò)運(yùn)營(yíng)商、終端網(wǎng)絡(luò)的網(wǎng)速、負(fù)載和網(wǎng)絡(luò)類(lèi)型等。如果服務(wù)器就近部署在服務(wù)區(qū)域、服務(wù)器與客戶(hù)端的網(wǎng)絡(luò)運(yùn)營(yíng)商一致時(shí),影響上下行網(wǎng)絡(luò)延時(shí)的主要因素就是終端網(wǎng)絡(luò)的負(fù)載和網(wǎng)絡(luò)類(lèi)型。一般來(lái)說(shuō),無(wú)線(xiàn)網(wǎng)絡(luò)環(huán)境下的傳輸延時(shí)波動(dòng)較大,傳輸延時(shí)通常在10~100ms不定。而有線(xiàn)寬帶網(wǎng)絡(luò)下,同城的傳輸延時(shí)能較穩(wěn)定的低至5ms~10ms。但是在國(guó)內(nèi)有很多中小運(yùn)營(yíng)商,以及一些交叉的網(wǎng)絡(luò)環(huán)境、跨國(guó)傳輸,那么延時(shí)會(huì)更高。T3:服務(wù)器間的延時(shí)在此我們要要考慮兩種情況,第一種,兩端都連接著同一個(gè)
6、邊緣節(jié)點(diǎn),那么作為最優(yōu)路徑,數(shù)據(jù)直接通過(guò)邊緣節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā)至播放端;第二種,采集端與播放端并不在同一個(gè)邊緣節(jié)點(diǎn)覆蓋范圍內(nèi),那么數(shù)據(jù)會(huì)經(jīng)由“靠近”采集端的邊緣節(jié)點(diǎn)傳輸至主干網(wǎng)絡(luò),然后再發(fā)送至“靠近”播放端的邊緣節(jié)點(diǎn),但這時(shí)服務(wù)器之間的傳輸、排隊(duì)還會(huì)產(chǎn)生延時(shí)。僅以骨干網(wǎng)絡(luò)來(lái)講,數(shù)據(jù)傳輸從黑龍江到廣州大約需要30ms,從上海到洛杉磯大約需要110ms~130ms。在實(shí)際情況下,我們?yōu)榱私鉀Q網(wǎng)絡(luò)不佳、網(wǎng)絡(luò)抖動(dòng),會(huì)在采集設(shè)備端、服務(wù)器、播放端增設(shè)緩沖策略。一旦觸發(fā)緩沖策略就會(huì)產(chǎn)生延時(shí)。如果卡頓情況多,延時(shí)會(huì)慢慢積累。要解決卡頓、積累延時(shí),就需要優(yōu)化整個(gè)網(wǎng)絡(luò)狀況。綜上所述,由于音
7、視頻在采集與播放端上的延時(shí)取決于硬件性能、編解碼內(nèi)核的優(yōu)化,不同設(shè)備,表現(xiàn)不同。所以通常市面上常見(jiàn)的“端到端延時(shí)”指的是T2+T3。延時(shí)低≠通話(huà)質(zhì)量可靠不論是教育、社交、金融,還是其它場(chǎng)景下,大家在開(kāi)發(fā)產(chǎn)品時(shí)可能會(huì)認(rèn)為“低延時(shí)”一定就是最好的選擇。但有時(shí),這種“追求極致”也是陷入誤區(qū)的表現(xiàn),低延時(shí)不一定意味著通訊質(zhì)量可靠。由于音頻與視頻本質(zhì)上的差異,我們需要分別來(lái)講實(shí)時(shí)音頻、視頻的通訊質(zhì)量與延時(shí)之間的關(guān)系。音頻質(zhì)量與延時(shí)▲音頻采樣示意圖影響實(shí)時(shí)音頻通訊質(zhì)量的因素包括:音頻采樣率、碼率、延時(shí)。音頻信息其實(shí)就是一段以時(shí)間為橫軸的正弦波,它是一段連續(xù)的信號(hào)(如上圖)。