陳偉 劉永紅 高菡
摘 要:本文從分析引起音視頻不同步現(xiàn)象的因素以及目前音視頻同步的優(yōu)缺點入手,運用時間戳、緩存技術(shù)和丟包處理機制來提出改進(jìn)音視頻同步的方法。在發(fā)送端,同步發(fā)送出同時采集的音視頻數(shù)據(jù);在接收端,采用主從流同步控制的方法,在時間戳判斷音視頻數(shù)據(jù)的同步關(guān)系上最終實現(xiàn)音頻播放的流暢性以及音視頻媒體間的同步性。經(jīng)實際測試可發(fā)現(xiàn)效果良好。
【關(guān)鍵詞】音視頻同步 時間戳 緩存技術(shù) 丟包處理機制 主從流
1 現(xiàn)有的音視頻同步方法
在當(dāng)今的多媒體交互系統(tǒng)中,其傳輸具有信息傳送服務(wù)不可靠的特點。數(shù)據(jù)傳輸過程會遇到數(shù)據(jù)包丟失的問題以及包的到達(dá)時延不同,最終會造成播放時發(fā)生聲像不同步的現(xiàn)象。國內(nèi)外以對媒體同步技術(shù)投以廣泛關(guān)注,目前為止,已經(jīng)有多種同步方案和模型。 時間戳同步信道法、音頻嵌入視頻同步技術(shù)和基于RTP/RTCP的同步機制是當(dāng)前最主流的三種同步方法。
1.1 時間戳同步信道法
時間戳同步信道法是將媒體數(shù)據(jù)與同步控制信息相分離的技術(shù)。流間同步和流內(nèi)同步分別采用同步信道技術(shù)和時間戳技術(shù)。通過該同步方法,會使流間和流內(nèi)均擁有較好的容錯性和準(zhǔn)確性。然而在媒體流與同步信號被分開傳輸時,需要增加額外的信道花費。
1.2 基于RTP/RTCP的同步機制
基于RTP/RTCP的同步機制的工作原理是通過RTCP來傳送控制分組,同時提供QoS監(jiān)視體制,動態(tài)改變發(fā)送端數(shù)據(jù)傳輸速率。該方法優(yōu)點明顯,即實時性佳,控制靈活;但是缺點也很顯著,在數(shù)據(jù)通信過程中,會極易改變媒體流的發(fā)送過程,從而導(dǎo)致接收端的播放過程被改變。
1.3 音頻嵌入視頻同步技術(shù)
音頻嵌入視頻同步技術(shù)是音視頻同步方法中的一大突破,該方法使音視頻數(shù)據(jù)能夠在信道實現(xiàn)同步傳輸和同時到達(dá)接收端。然而音頻嵌入視頻對技術(shù)人員提出了極高的要求,該方法會大大提高編碼的計算復(fù)雜度,并且最終會對視頻質(zhì)量產(chǎn)生一定的影響。
2 音視頻同步方法的改進(jìn)
2.1 音視頻同步方法的簡介
音視頻同步方法即是基于數(shù)據(jù)緩存技術(shù)、丟包處理機制和RTP包頭時間戳來進(jìn)行的音視頻同步,最終實現(xiàn)音視頻的同步與交互的實時性均衡。在發(fā)送端,音視頻數(shù)據(jù)在經(jīng)過采集、編碼與打包之后分別存進(jìn)各自的發(fā)送緩存,然后通過開啟發(fā)送線程來順次交錯地從音視頻緩存中提取出數(shù)據(jù)發(fā)送。在接收端,運用緩存機制來消除抖動,達(dá)到媒體內(nèi)的同步;運用主從流同步控制方式,其中音頻是主流,視頻是從流,從音視頻數(shù)據(jù)的時間戳來判斷其中的同步關(guān)系。當(dāng)檢測到丟包時,如果為音頻丟包,就采用固定噪聲包來代替丟失的音頻包;如果為視頻丟包,就按照一定規(guī)則來進(jìn)行丟幀處理。
2.2 發(fā)送端的同步實現(xiàn)
發(fā)送端同時開啟兩個線程來進(jìn)行音頻與視頻的采集。音頻的編解碼采用G.711標(biāo)準(zhǔn),視頻的編解碼采用H.264標(biāo)準(zhǔn),需保證音視頻幀率的一致性。在音視頻數(shù)據(jù)采集工作結(jié)束后,進(jìn)行編碼與打包,最后存入各自列屬的發(fā)送緩存隊列中等待發(fā)送線程來提取數(shù)據(jù)發(fā)送。音頻數(shù)據(jù)量比較小,一個RTP包就可以承載一幀,然而視頻幀比較大,需要對其進(jìn)行分包。在視頻幀分包時,每一幀結(jié)束時采用RTP包頭中的Mark字段來標(biāo)志,該字段為1就表明當(dāng)前包為一幀的末包。先通過發(fā)送線程從音視頻的緩存隊列中提取RTP包發(fā)送,然后向同一個端口交替輸送音視頻數(shù)據(jù)。
2.3 接收端的同步實現(xiàn)
2.3.1 媒體內(nèi)同步
網(wǎng)絡(luò)抖動會對媒體流的播放流暢性產(chǎn)生極大影響,為了消除該弊端,接收端利用緩存機制來實現(xiàn)媒體內(nèi)的同步,從而保證音頻流能連續(xù)輸送。在接收到音頻數(shù)據(jù)后先將其存入緩存,設(shè)定一個閾值R,在緩存的數(shù)據(jù)幀數(shù)大于R時才可以從緩存中取出數(shù)據(jù)播放。當(dāng)播放R個單元所用的時間大于網(wǎng)絡(luò)的最大抖動時間時,可以使音頻播放的流暢性得到顯著提高。
音頻數(shù)據(jù)的存儲是運用一級緩存鏈表,經(jīng)過判斷接收的音頻RTP數(shù)據(jù)包的序列號來將音頻數(shù)據(jù)按照順序依次放入緩存中。因為數(shù)據(jù)在網(wǎng)絡(luò)傳輸中也會遭遇丟包,所以如果對丟包不進(jìn)行處理,就會影響到音頻播放的流暢性,進(jìn)而對音視頻同步播放產(chǎn)生一定的影響。針對該種現(xiàn)象,本文設(shè)計出一種音頻丟包時的處理機制,在檢測出存在音頻丟包時,采用固定噪聲包來填補丟失的音頻包,并且設(shè)置其相應(yīng)的時間戳。
2.3.2 媒體間同步
主流連續(xù)播放,并且主流決定從流的播放,這是音視頻同步所采用的主從流方式。本文選擇音頻流擔(dān)當(dāng)主流,視頻流為從流,讓音頻流連續(xù)地播放。經(jīng)研究表明,對音頻以及相關(guān)的視頻流而言,當(dāng)偏移-80ms(音頻滯后于視頻)至+80ms(音頻超前于視頻)之內(nèi),大多數(shù)的用戶都不會覺察到偏移的存在,此區(qū)域被稱為同步區(qū)域;當(dāng)偏移范圍在-160ms至+160ms以外時,稱為不同步區(qū)域。所以,本文設(shè)置偏移閾值M為160ms,在同步播放的線程中,定時地播放從音頻緩存中提取出的音頻幀,并且記下當(dāng)時音頻幀的時間戳Ta。在播放音頻之前,先從視頻數(shù)據(jù)緩沖中提取出一幀圖像數(shù)據(jù),以得到其時間戳Tv。
(1)Ta-Tv>M,表明視頻幀滯后,則丟棄視頻幀;
(2)Tv-Ta>M,表明視頻幀超前,則將當(dāng)前的視頻幀緩存,在播放下一幀的音頻時來進(jìn)行重新判斷;
(3)-M≤Tv-Ta≤M,表明一切正常,則播放當(dāng)前的視頻幀
在進(jìn)行同步處理時,需加入去馬賽克機制。若主幀滯后,則應(yīng)丟棄主幀以及主幀以后的所有輔幀;若輔幀滯后,則應(yīng)僅丟棄當(dāng)前的輔幀。
3 效果演練
把本方案運用于多媒體信息交互系統(tǒng)中,從而實現(xiàn)一個簡單的安卓客戶端,通過媒體服務(wù)器轉(zhuǎn)發(fā)音視頻數(shù)據(jù)。本客戶端經(jīng)測試顯示出音頻流暢性佳,視頻圖像的清晰度高,未出現(xiàn)明顯的馬賽克現(xiàn)象。
為了檢驗同步機制是否存在效果,在接收端分別統(tǒng)計出采用同步機制的前后,音視頻同步關(guān)系分布概率。在測試時把發(fā)送端設(shè)置發(fā)送1000個視頻幀,經(jīng)過多次測試后采取均值,表1統(tǒng)計出音視頻同步關(guān)系概率,從該表可以看出運用同步方法可很好地改正音視頻失步問題。
4 結(jié)束語
在當(dāng)今的多媒體交互系統(tǒng)中,關(guān)鍵技術(shù)為音視頻同步。經(jīng)過分析造成音頻不同步的原因,并結(jié)合目前已存在的音視頻同步方案,本文提出了一種新型的音視頻同步方法?;赗TP包頭時間戳、緩存機制和丟包處理機制,采用主從流方式播放音視頻以保證其流暢性。該方法運行簡單,運算方便,占用系統(tǒng)資源量少,且具有擴(kuò)展性。經(jīng)測試,同步效果優(yōu)良,有高度的實用價值。
作者單位
廣東威創(chuàng)視訊科技股份有限公司 廣東省廣州市 510670