陳偉 劉永紅 高菡

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