要說在視頻直播軟件開發(fā)的過程中,什么是技術(shù)人員最頭疼的?肯定有人會毫無疑問的回答:直播的卡頓和延時(shí)!沒錯(cuò),這兩位可以說是直播中的“老朋友”了。毫不夸張的說,每一個(gè)直播平臺都遇到過這兩種問題。所以,今天我們就來聊一下設(shè)備端存在的延時(shí)是怎么個(gè)情況。 音視頻數(shù)據(jù)在設(shè)備端產(chǎn)生的延時(shí)是可以進(jìn)行細(xì)分的。設(shè)備端的延時(shí)主要是與編解碼算法、音視頻數(shù)據(jù)量和硬件性能相關(guān)的,并且設(shè)備端的延時(shí)可以達(dá)到30-200ms甚至更高。因此,音頻和視頻在采集端或者是播放端所產(chǎn)生延時(shí)的過程是基本一致的,但原因不同。 1. 音頻在設(shè)備端的延時(shí) (1)采集后的音頻會先經(jīng)過聲卡進(jìn)行信號轉(zhuǎn)換,聲卡的本身會產(chǎn)生延時(shí)。 (2)音頻進(jìn)入前處理和編碼階段后,如果采取標(biāo)準(zhǔn)編碼,那么最低算法的延時(shí)就需要2.5-60ms。 (3)音頻播放過程中出現(xiàn)延時(shí),大多數(shù)與播放端的硬件性能相關(guān)。 (4)在前處理和后處理這些算法的過程中,都會帶來算法延時(shí)。 (5)如果在抗丟包處理中,增加重傳算法和前向糾錯(cuò)算法的話,延時(shí)一般會在20-200ms左右。但是如果受到了jitter buffer影響,可能會更高。 2.視頻在設(shè)備端的延時(shí) (1)一般視頻在進(jìn)行采集時(shí)都會遇到成像延時(shí),主要是由CCD相關(guān)的硬件產(chǎn)生。目前市面上較好的CCD一秒可以達(dá)到50幀,延時(shí)約為20ms。 (2)用H.264舉例的話,主要包含I、B、P幀。如果是每秒30幀相連幀,并且不包括B幀。因?yàn)锽幀的解碼,依賴于前后視頻幀會增加一定的延時(shí),所以采集到的一幀數(shù)據(jù)可能就會直接進(jìn)入編碼器。沒有B幀時(shí),編碼的幀延時(shí)可以忽略不計(jì)。但如果有B幀,就會帶來算法延時(shí)。 (3)在渲染情況下,一般延時(shí)比較,但是也會受到音畫同步和系統(tǒng)性能的影響增大延時(shí)。 (4)與音頻相同的是,視頻也會遇到端網(wǎng)絡(luò)延時(shí)的狀況。 其實(shí)在設(shè)備端,CPU和緩沖都會同時(shí)處理來自多個(gè)應(yīng)用和外接設(shè)備的請求。如果某個(gè)出現(xiàn)問題的設(shè)備請求占用了CPU,那么就會導(dǎo)致音視頻的處理請求出現(xiàn)延時(shí)的情況。就拿音頻來說吧,如果出現(xiàn)上述情況,CPU可能會沒辦法及時(shí)填充音頻緩沖區(qū),音頻也會出現(xiàn)卡頓。 由此可見,在視頻直播軟件開發(fā)的過程中設(shè)備整體的性能,還是會給音視頻的采集、編解碼和播放造成一定影響從而產(chǎn)生延時(shí)的。所以,還需要在這方面多多注意。 本文聲明原創(chuàng),轉(zhuǎn)載請注明出處。 |
|