專利名稱::一種多媒體文件音視頻同步播放的系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種多媒體文件音視頻同步播放的方法及系統(tǒng),尤其涉及一種以音頻數(shù)據(jù)的播放進(jìn)度為參考,來(lái)同步視頻播放的方法及系統(tǒng)。
背景技術(shù):
:隨著半導(dǎo)體工業(yè)的發(fā)展,多媒體技術(shù)一直是IT(InformationTechnology,信息技術(shù))研發(fā)人員的重要研發(fā)對(duì)象。在目前的個(gè)人計(jì)算機(jī)上,已經(jīng)有多種功能強(qiáng)大的多々某體解決方案,包含多媒體的播放、捕獲和編輯等方面。然而個(gè)人計(jì)算機(jī)的體積相對(duì)龐大,開(kāi)關(guān)機(jī)時(shí)間長(zhǎng),無(wú)法滿足消費(fèi)者隨時(shí)隨地享受多媒體娛樂(lè)的要求。因此,近年來(lái)消費(fèi)性電子得到飛速發(fā)展,手機(jī)、PMP(PortableMediaPlayer,便攜式媒體播放器)、數(shù)碼相框等產(chǎn)品層出不窮。在這些產(chǎn)品中,人們最關(guān)心的多媒體方面的技術(shù),就是如何實(shí)現(xiàn)音視頻數(shù)據(jù)的同步播放。對(duì)于不同的多媒體數(shù)據(jù)格式和不同能力的CPU,同步播放的方法也不相同。目前,4艮多現(xiàn)有同步技術(shù)都是針對(duì)MPEG(MovingPicturesExpertsGroup)格式的,這些方法比較通用。但MPEG算法具有復(fù)雜度較高,相鄰幀相互不獨(dú)立,碼流中須包含專為影音同步而設(shè)立的時(shí)間戳信息等特點(diǎn)。而針對(duì)其它的數(shù)據(jù)格式,尤其是各視頻幀相互獨(dú)立的數(shù)據(jù)格式(如motionjpeg,此格式在數(shù)碼相機(jī)及監(jiān)控產(chǎn)品中大量使用),使用這些通用的同步方法會(huì)有如下缺點(diǎn)1.很多數(shù)據(jù)格式中沒(méi)有時(shí)間戳,因?yàn)闀r(shí)間戳?xí)咕幋a器和解碼器的負(fù)擔(dān)同時(shí)增加;2.對(duì)于運(yùn)算能力較差的平臺(tái),如果其解碼過(guò)程不實(shí)時(shí),則無(wú)法同步;3.這些方法中,音頻和視頻的播放控制都需要定時(shí)器,還可能有其他硬件資源,成本較高,復(fù)雜度也大。在公開(kāi)號(hào)為CN1791207,7>開(kāi)日為2006年6月21日,發(fā)明名稱為"一種播放裝置及其方法"的中國(guó)發(fā)明專利申請(qǐng)中公開(kāi)了一種播放裝置及方法,該專裝置或方法是依據(jù)音頻信號(hào)部分所產(chǎn)生的時(shí)間戳記來(lái)同步影像與音頻的。其通過(guò)時(shí)間戳記來(lái)預(yù)先得知圖框的播放時(shí)序,因此便可于影像與音訊不同步之前即完成校正,有效改善影音播放的品質(zhì)。但是該專利也是僅僅針對(duì)包含時(shí)間戳的影音數(shù)據(jù),并不適用于不包含時(shí)間戳的影音數(shù)據(jù)的同步處理。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題是提供一種多媒體文件音視頻同步播放的方法及系統(tǒng),該方法或系統(tǒng)不需要時(shí)間戳,在解碼不實(shí)時(shí)的情況下,也能實(shí)現(xiàn)同步,且自動(dòng)適應(yīng)不同運(yùn)算能力的平臺(tái);另外,對(duì)硬件資源的占用小,軟件復(fù)雜度也很低;可有效的降低成本。為了解決上述問(wèn)題,本發(fā)明提供了一種多媒體文件音視頻同步播放的系統(tǒng),包括影音信號(hào)分流單元,用于將多媒體數(shù)據(jù)分成音頻數(shù)據(jù)和視頻數(shù)據(jù)并輸出;音頻處理單元,用于對(duì)所述影音信號(hào)分流單元輸出的音頻數(shù)據(jù)進(jìn)行解碼和播放;視頻處理單元,用于對(duì)所述影音信號(hào)分流單元輸出的視頻數(shù)據(jù)進(jìn)行解碼和播放;還包括影音同步控制單元,用于檢測(cè)所述音頻處理單元的播放進(jìn)度,并將其與一預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于該預(yù)定值時(shí),向所述影音信號(hào)分流單元發(fā)送同步控制指令,指示影音信號(hào)分流單元讀取相應(yīng)幀的視頻數(shù)據(jù)進(jìn)行輸出播放。進(jìn)一步地,所述影音同步控制單元包括音頻播放偵測(cè)模塊和命令發(fā)送模塊,其中,所述音頻播放偵測(cè)模塊用于檢測(cè)所述音頻處理單元中音頻播放模塊的播放進(jìn)度并進(jìn)行記錄,所述音頻播放偵測(cè)模塊將播放進(jìn)度與所述預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于該預(yù)定值時(shí),發(fā)送控制信息給所述命令發(fā)送模塊,將所記錄的播放進(jìn)度減去所述預(yù)定值并在該差值基礎(chǔ)上繼續(xù)記錄播放進(jìn)度;所述命令發(fā)送模塊用于在接到所述控制信息后發(fā)送所述同步控制指令給所述影音信號(hào)分流單元中的視頻數(shù)據(jù)讀取;漠塊;所述視頻數(shù)據(jù)讀取模塊,用于在接收到所述同步控制指令后將是否響應(yīng)同步控制指令的反饋信息發(fā)送給所述命令發(fā)送模塊;所述命令發(fā)送模塊還用于根據(jù)該反饋信息確定下一條同步控制指令需要讀取視頻數(shù)據(jù)的幀數(shù)。進(jìn)一步地,所述音頻播放偵測(cè)模塊包括同步計(jì)數(shù)器和第一比較器,所述同步計(jì)數(shù)器用于當(dāng)音頻播放模塊從一音頻緩沖模塊中讀取一個(gè)播放單位的音頻數(shù)據(jù)時(shí),計(jì)數(shù)一次;所述第一比較器用于比較同步計(jì)數(shù)器的計(jì)數(shù)值和所述預(yù)定值,在同步計(jì)數(shù)值大于預(yù)定值時(shí),發(fā)送控制信息給所述命令發(fā)送模塊,并將計(jì)數(shù)值減去所述預(yù)定值。進(jìn)一步地,所述同步計(jì)數(shù)器的計(jì)數(shù)步長(zhǎng)step由以下公式獲得step=rate*Length;所述預(yù)定值gate通過(guò)以下公式獲得gate:scale承Fs^式中,Length為音頻播放緩沖器的大小,F(xiàn)s為音頻數(shù)據(jù)采樣率,scale為視頻流的時(shí)間尺度,rate為視頻流的時(shí)間尺度與每幀視頻數(shù)據(jù)播放時(shí)間的比值。進(jìn)一步地,所述命令發(fā)送模塊包括一命令計(jì)數(shù)器,該命令計(jì)數(shù)器用于當(dāng)接收到音頻播放偵測(cè)模塊發(fā)送的控制信息后,發(fā)送同步控制指令給視頻數(shù)據(jù)讀取模塊,并將其計(jì)數(shù)加l;所述視頻數(shù)據(jù)讀取模塊接收到所述同步控制指令后根據(jù)命令計(jì)數(shù)器的計(jì)數(shù)值N+l,讀取當(dāng)前幀的下N+l頻的視頻數(shù)據(jù)并輸出播放;并且所述命令計(jì)數(shù)器接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令時(shí),清零其計(jì)數(shù)。進(jìn)一步地,所述命令發(fā)送模塊包括第二命令計(jì)數(shù)器、響應(yīng)計(jì)數(shù)器和第二比較器,其中,所述第二命令計(jì)數(shù)器用于接收到音頻播放偵測(cè)模塊發(fā)送的控制信息后將其計(jì)數(shù)值加1;所述響應(yīng)計(jì)數(shù)器用于接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后將其計(jì)數(shù)值加1;所述第二比較器用于比較所述第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的值,所述響應(yīng)計(jì)數(shù)器無(wú)計(jì)數(shù)值時(shí),發(fā)送讀取下一幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;當(dāng)所述第二命令計(jì)數(shù)器比響應(yīng)計(jì)數(shù)器的值大M時(shí),發(fā)送讀取當(dāng)前幀的下M幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;在視頻數(shù)據(jù)讀取模塊向所述第二比較器發(fā)送響應(yīng)同步控制指令的反饋信息后,第二比較器清零第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器。進(jìn)一步地,該系統(tǒng)還包括一定時(shí)器,用于當(dāng)所述多^某體數(shù)據(jù)中沒(méi)有音頻數(shù)據(jù)時(shí),根據(jù)所述多媒體數(shù)據(jù)中的每巾貞視頻數(shù)據(jù)的播放時(shí)間進(jìn)行定時(shí),每到達(dá)定時(shí)時(shí),通知視頻數(shù)據(jù)處理單元解碼并播;故一幀視頻數(shù)據(jù)。本發(fā)明還提供了一種多媒體文件音視頻同步播放的方法,包括以下步驟根據(jù)播放的多媒體數(shù)據(jù)計(jì)算音頻數(shù)據(jù)的播放進(jìn)度參數(shù)和預(yù)定值;將多媒體數(shù)據(jù)分成音頻數(shù)據(jù)和視頻數(shù)據(jù),解碼并顯示第一幀視頻數(shù)據(jù),同時(shí)進(jìn)入音頻處理流程,解碼并播放音頻數(shù)據(jù);檢測(cè)音頻數(shù)據(jù)的播放進(jìn)度并判斷音頻數(shù)據(jù)的播放進(jìn)度是否達(dá)到所述預(yù)定值,如果達(dá)到,控制視頻處理單元進(jìn)入視頻處理流程,解碼并顯示相應(yīng)幀的視頻數(shù)據(jù)。進(jìn)一步地,所述判斷音頻數(shù)據(jù)的播放進(jìn)度是否達(dá)到所述預(yù)定值的方法為每播放一個(gè)播放單位的音頻數(shù)據(jù)時(shí),計(jì)數(shù)一次,將計(jì)數(shù)值與所述預(yù)定值進(jìn)行比較,如果計(jì)數(shù)值大于預(yù)定值,則播放進(jìn)度達(dá)到預(yù)定值,將所記錄的播放進(jìn)度減去所述預(yù)定值,并在該差值基礎(chǔ)上繼續(xù)記錄播放進(jìn)度。進(jìn)一步地,所述控制視頻處理單元進(jìn)入視頻處理流程的步驟由一命令發(fā)送模塊來(lái)完成,在播放進(jìn)度達(dá)到預(yù)定值時(shí),命令發(fā)送模塊將一命令計(jì)數(shù)器的計(jì)數(shù)加l,并發(fā)送同步控制指令給視頻數(shù)據(jù)讀取模塊,所述視頻數(shù)據(jù)讀取模塊接收到所述同步控制指令后根據(jù)命令計(jì)數(shù)器的計(jì)數(shù)值N+l,讀取當(dāng)前幀的下N+l頻的視頻數(shù)據(jù)并輸出播放;并且所述命令計(jì)數(shù)器接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令時(shí),清零其計(jì)數(shù)。進(jìn)一步地,所述控制纟見(jiàn)頻處理單元進(jìn)入纟見(jiàn)頻處理流程的方法為在播放進(jìn)度達(dá)到預(yù)定值時(shí),將一第二命令計(jì)數(shù)器加l;在接收到的視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后,將一響應(yīng)計(jì)數(shù)器加l,用一第二比較器比較第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的值,所述響應(yīng)計(jì)數(shù)器無(wú)計(jì)數(shù)值時(shí),發(fā)送讀取下一幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取才莫塊;當(dāng)所述第二命令計(jì)數(shù)器比響應(yīng)計(jì)數(shù)器的值大M時(shí),發(fā)送讀取當(dāng)前幀的下M幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;所述第二比較器在接收到的視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后,將所述命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的計(jì)數(shù)值清零。本發(fā)明所產(chǎn)生的有益效果是,通過(guò)檢測(cè)音頻的播放進(jìn)度來(lái)控制視頻播放的同步,不需要多媒體數(shù)據(jù)中包含時(shí)間戳,可以有效減輕編碼器及解碼器的負(fù)擔(dān);同步控制過(guò)程運(yùn)算量小,適用于運(yùn)算能力較差的平臺(tái),因此可廣泛應(yīng)用于便攜式移動(dòng)設(shè)備播放多媒體數(shù)據(jù)時(shí)的音視頻同步;本發(fā)明對(duì)硬件平臺(tái)的要求很低,硬件平臺(tái)結(jié)構(gòu)簡(jiǎn)單,成本低。圖l是本發(fā)明的多媒體文件音視頻同步播放的系統(tǒng)的整體結(jié)構(gòu)框圖;圖2是本發(fā)明的系統(tǒng)中影音同步控制單元的結(jié)構(gòu)框圖;圖3是影音同步控制單元中命令發(fā)送模塊的一實(shí)施例的結(jié)構(gòu)框圖;圖4是本發(fā)明的多媒體文件音視頻同步播放的方法的流程圖;圖5是本發(fā)明的方法中音頻處理流程的一實(shí)施例的示意圖;圖6是本發(fā)明的方法中視步處理流程的一實(shí)施例的示意圖;圖7是本發(fā)明的方法中影音同步控制的流程圖;圖8是本發(fā)明的方法中進(jìn)行音頻偵測(cè)的流程圖;圖9是本發(fā)明的方法中命令發(fā)送模塊發(fā)送視頻播放同步控制指令的一實(shí)施例的流程圖;圖10是本發(fā)明的方法中命令發(fā)送模塊發(fā)送視頻播放同步控制指令的另一實(shí)施例的流程圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,以使本領(lǐng)域的技術(shù)人員可以更好的理解本發(fā)明并能予以實(shí)施,但所舉實(shí)施例不作為對(duì)本發(fā)明的限定。本發(fā)明的多媒體音視頻同步播放的系統(tǒng)如圖1所示,包括影音信號(hào)分流單元11,用于將存儲(chǔ)于文件中的多媒體數(shù)據(jù)分成獨(dú)立的音頻數(shù)據(jù)和視頻數(shù)據(jù),影音信號(hào)分流單元11又包括音頻數(shù)據(jù)讀耳又^t塊111和視頻數(shù)據(jù)讀取模塊112;音頻數(shù)據(jù)處理單元12,用于對(duì)音頻數(shù)據(jù)進(jìn)行處理,又包括音頻解碼模塊121、音頻緩沖模塊122和音頻播放模塊123,其中,音頻解碼模塊121,用于對(duì)音頻數(shù)據(jù)讀取模塊111的輸出進(jìn)行解碼,結(jié)果存放在音頻緩沖模塊122中;音頻播放模塊123,負(fù)責(zé)播放音頻緩沖模塊122中的數(shù)據(jù);視頻數(shù)據(jù)處理單元13,用于對(duì)視頻數(shù)據(jù)進(jìn)行處理,又包括視頻解碼模塊131、視頻緩沖模塊132和視頻播放模塊133,其中,視頻解碼模塊131,用于對(duì)視頻數(shù)據(jù)讀取模塊112的輸出進(jìn)行解碼,結(jié)果存放在^L頻緩沖模塊132中;視頻播放模塊133,用于對(duì)視頻緩沖模塊132中的數(shù)據(jù)進(jìn)行播放。上述功能單元模塊的內(nèi)部結(jié)構(gòu)均同現(xiàn)有音視頻同步處理技術(shù)中所采用的相應(yīng)功能單元的內(nèi)部結(jié)構(gòu)相同,在此不再對(duì)各功能單元及才莫塊的處理過(guò)程以及內(nèi)部構(gòu)造進(jìn)一步闡述,并且上述功能模塊的劃分僅為描述本發(fā)明,仍可以采用具備上述功能的其它模塊劃分方法來(lái)構(gòu)成本發(fā)明,如音頻緩沖模塊122和視頻緩沖模塊132均可以采用同一個(gè)緩沖模塊。本發(fā)明在現(xiàn)有技術(shù)的基礎(chǔ)上還包括影音同步控制單元14,其包括一音頻播放偵測(cè)模塊141和一命令發(fā)送模塊142,音頻播放偵測(cè)模塊141檢測(cè)音頻播放模塊123的播放進(jìn)度并對(duì)播放進(jìn)度進(jìn)行記錄,音頻播放偵測(cè)模塊141將記錄的音頻播放進(jìn)度與一預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于預(yù)定值時(shí),音頻播放偵測(cè)模塊141發(fā)送控制信息給命令發(fā)送模塊142,并令存儲(chǔ)的播放進(jìn)度值減去預(yù)定值后繼續(xù)計(jì)數(shù);命令發(fā)送模塊142接收到控制信息后,發(fā)送視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112讀取相應(yīng)幀的視頻數(shù)據(jù),視頻數(shù)據(jù)讀取模塊112將是否響應(yīng)同步控制指令的反饋信息發(fā)送給命令發(fā)送模塊142,命令發(fā)送模塊142根據(jù)反饋信息確定下一條視頻播放同步控制指令需要讀取視頻數(shù)據(jù)的幀數(shù)。其中,如圖2所示,音頻播放偵測(cè)模塊141包括一同步計(jì)數(shù)器1411和第一比較器1412,當(dāng)音頻播放模塊123從音頻緩沖模塊122中讀取一個(gè)播放單位的數(shù)據(jù)時(shí),同步計(jì)數(shù)器1411就計(jì)一次,步長(zhǎng)為step;第一比較器1412比較同步計(jì)數(shù)器1411的值和門限值gate(即預(yù)定值),當(dāng)同步計(jì)數(shù)值大于門限值gate時(shí),就發(fā)送控制信息給命令發(fā)送模塊142,同步計(jì)數(shù)器1411計(jì)數(shù)值減去門限值gate并繼續(xù)計(jì)數(shù)。音頻播放偵測(cè)模塊141根據(jù)同步計(jì)數(shù)器1411中計(jì)數(shù)的音頻數(shù)據(jù)播放情況與門限值的比較來(lái)判斷是否發(fā)送控制信息給命令發(fā)送模塊142,從而控制視頻數(shù)據(jù)的播放,這樣便可以實(shí)現(xiàn)通過(guò)音頻播放進(jìn)度來(lái)同步視頻播放進(jìn)度的目的。其中,如圖2所示,命令發(fā)送模塊142包括一命令計(jì)數(shù)器1421,當(dāng)接收到音頻播放偵測(cè)模塊141發(fā)送的控制信息后,便發(fā)送視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112,同時(shí)命令計(jì)數(shù)器1421的計(jì)數(shù)值加1,如果接收到的視頻數(shù)據(jù)讀取模塊112發(fā)送的反饋信息為響應(yīng)同步控制指令,則清零命令計(jì)數(shù)器1421,否則不進(jìn)行清零操作。如果纟見(jiàn)頻數(shù)據(jù)讀取模塊112接收到N次同步控制指令均未響應(yīng),則再次接收到同步控制指令響應(yīng)后,視頻數(shù)據(jù)讀取模塊112根據(jù)命令計(jì)數(shù)器1421的計(jì)數(shù)值N+l從當(dāng)前幀跳過(guò)N幀讀取下N+l幀的視頻數(shù)據(jù)。命令發(fā)送模塊142中的命令計(jì)數(shù)器1421根據(jù)接收到的控制信息和響應(yīng)反饋信息來(lái)計(jì)數(shù),從而獲得下次同步控制指令需要讀取的視頻數(shù)據(jù)的幀數(shù)(當(dāng)前幀的下N+l幀)。進(jìn)而在音視頻數(shù)據(jù)發(fā)生不同步時(shí),根據(jù)音頻數(shù)據(jù)的播放進(jìn)度直接讀取相應(yīng)幀的視頻數(shù)據(jù)。另外,如圖3所示,命令發(fā)送模塊142還可以采用下列方式構(gòu)成包括一個(gè)第二命令計(jì)數(shù)器1422和一個(gè)響應(yīng)計(jì)數(shù)器1423,以及一個(gè)第二比較器1424,第二命令計(jì)數(shù)器1422接收音頻播放偵測(cè)模塊141發(fā)送的控制信息后其計(jì)數(shù)值便加1,響應(yīng)計(jì)數(shù)器1423接收到的視頻數(shù)據(jù)讀取模塊112發(fā)送的反饋信息為響應(yīng)同步控制指令后其計(jì)數(shù)值便加1,第二比較器1424比較第二命令計(jì)數(shù)器1422和響應(yīng)計(jì)數(shù)器1423的計(jì)凄t值,當(dāng)響應(yīng)計(jì)數(shù)器1423無(wú)計(jì)數(shù)值時(shí),便發(fā)送讀取下一幀視頻圖像的視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112。如果第二命令計(jì)數(shù)器1422的計(jì)^t值比響應(yīng)計(jì)數(shù)器1423的計(jì)數(shù)值大M,便發(fā)送讀取當(dāng)前幀的下M幀視頻圖像的同步控制指令給視頻數(shù)據(jù)讀取模塊112。視頻數(shù)據(jù)讀取模塊112反饋給第二比較器1424響應(yīng)同步控制指令信息后,第二比較器1424清零兩個(gè)計(jì)數(shù)器。其中,音頻數(shù)據(jù)讀取模塊111從源文件中以塊(Block)為單位連續(xù)地讀取音頻壓縮數(shù)據(jù)。其中,音頻緩沖模塊122與音頻播放模塊123間以較小的播放單位(例如32個(gè)采樣點(diǎn))進(jìn)行數(shù)據(jù)傳輸。假設(shè)播放一個(gè)單位數(shù)據(jù)的播放時(shí)間為Ta,設(shè)允許的最大同步誤差為Emax,則Ta〈Emax即可。其中,視頻數(shù)據(jù)讀取模塊112根據(jù)影音同步控制單元14提供的控制命令及參數(shù),對(duì)源文件中的視頻壓縮數(shù)據(jù)以.幀(Frame)為單位進(jìn)行讀取。令音頻播放模塊123播放一個(gè)播放單位音頻數(shù)據(jù)的時(shí)間Ta,遠(yuǎn)小于牙見(jiàn)頻數(shù)據(jù)一幀的顯示時(shí)間Tv。由于每幀視頻數(shù)據(jù)的顯示時(shí)間Tv是固定的,而播放一個(gè)播放單位音頻數(shù)據(jù)的時(shí)間Ta則是播放音頻數(shù)據(jù)時(shí)人為設(shè)定的。由于本方法,會(huì)令同步計(jì)數(shù)器的計(jì)數(shù)大于門限值gate時(shí),就發(fā)送控制信息給命令發(fā)送模塊142,同步計(jì)數(shù)器1411計(jì)數(shù)值減去gate。而同步計(jì)數(shù)器1411計(jì)數(shù)值減去gate后的計(jì)數(shù)值再次計(jì)數(shù),因此再次計(jì)數(shù)是在差值的基礎(chǔ)上的,因此會(huì)產(chǎn)生誤差。由于這個(gè)誤差,理論上本方法的視頻幀間隔誤差是正負(fù)交替的,所以同步誤差不會(huì)累積,始終小于Ta。測(cè)試表明,當(dāng)音頻數(shù)據(jù)的播放單位較小時(shí)(例如32個(gè)采樣點(diǎn)),人眼察覺(jué)不到小于Ta的誤差。為了進(jìn)一步減少誤差,人為設(shè)定音頻播放模塊123播放一個(gè)播放單位音頻數(shù)據(jù)的時(shí)間Ta,遠(yuǎn)小于^L頻彰:才居一幀的顯示時(shí)間Tv。在具體計(jì)算時(shí),Ta=Length/Fs(1),式中,Length為播放緩沖器的大小,F(xiàn)s為音頻數(shù)據(jù)采樣率。Tv對(duì)不同的多媒體數(shù)據(jù)格式會(huì)有不同的表達(dá)式,例如對(duì)AVI(AudioVideoInterleaved)文件,Tv=scale/rate-(2),式中,scale為視頻流的時(shí)間尺度,rate這個(gè)參數(shù)沒(méi)有明確的意義。舉例說(shuō)明一個(gè)檔案的幀頻是29.96fiDS,那么Tv=l/29.96,這是個(gè)小數(shù),由于計(jì)算機(jī)字長(zhǎng)的限制,在計(jì)算時(shí)會(huì)損失精度。如果寫成1>=100/2996,在計(jì)算時(shí)就不會(huì)有小數(shù)出現(xiàn),此例中scale=100,rate=2996。當(dāng)然,也可以寫成scale=200,rate=5992,其意義是一樣的。這僅僅是AVI這種格式的約定。根據(jù)上述公式(1)和公式(2)可以得出Tv/Ta=(scale*Fs)/(rate*Length)(3);式中的參數(shù)最好都是整數(shù),以便于計(jì)算。令step=rate*Length,gate=scale*Fs,即可得到同步計(jì)數(shù)器的步長(zhǎng)值step,以及門限值(預(yù)定值)gate。對(duì)于沒(méi)有音頻數(shù)據(jù),只有視頻數(shù)據(jù)的文件,可以由音頻處理單元按默認(rèn)設(shè)置播放靜音數(shù)據(jù),來(lái)控制視頻數(shù)據(jù)的播放;對(duì)于音頻播放總時(shí)間小于視頻播放總時(shí)間的文件,在音頻播放結(jié)束后,也可播放靜音,直到視頻播放結(jié)束。另外,也可以設(shè)置一個(gè)定時(shí)器,當(dāng)音頻數(shù)據(jù)讀取模塊判斷出所接收到的影音信號(hào)沒(méi)有音頻數(shù)據(jù)時(shí),不啟動(dòng)音頻處理流程,而啟動(dòng)該定時(shí)器,該定時(shí)器連接視頻數(shù)據(jù)讀取模塊,按照視頻的幀間隔進(jìn)行定時(shí),對(duì)視頻的播放進(jìn)行控制。如圖4所示,本發(fā)明的多媒體文件音視頻同步播放的方法包括如下步驟步驟41,系統(tǒng)初始化,根據(jù)顯示和播放的音視頻數(shù)據(jù)參數(shù)計(jì)算音頻播放進(jìn)度參數(shù)和一預(yù)定值;步驟42,進(jìn)入視頻處理流程,解碼和顯示第一幀視頻數(shù)據(jù),進(jìn)入音頻處理流程,解碼并插-放第一個(gè)播放單位的音頻數(shù)據(jù);步驟43,進(jìn)入影音同步控制流程,根據(jù)音頻播放進(jìn)度情況判斷是否發(fā)出視頻播放同步控制指令,如果發(fā)出視頻播放同步控制指令,執(zhí)行步驟44;如果沒(méi)有發(fā)出視頻播放同步控制指令,執(zhí)行步驟47;步驟44,判斷視頻處理流程是否響應(yīng)該視頻播放同步控制指令,如果視頻處理流程響應(yīng)該視頻播放同步控制指令,執(zhí)行步驟45;如果視頻處理流程沒(méi)有響應(yīng)該視頻播放同步控制指令,執(zhí)行步驟46;步驟45,進(jìn)入視頻處理流程,解碼和顯示相應(yīng)幀的視頻數(shù)據(jù);步驟46,仍播放當(dāng)前幀的視頻數(shù)據(jù);步驟47,掛起視頻處理流程,不再進(jìn)行下一幀的^L頻處理。在步驟42中,音頻處理流程的步驟如圖5所示音頻數(shù)據(jù)讀取^f莫塊111從多媒體源文件中以塊(Block)為單位連續(xù)地讀取音頻壓縮數(shù)據(jù)(步驟4211),送到音頻解碼模塊121進(jìn)行解碼(步驟4212),解碼后的數(shù)據(jù)存于音頻緩沖模塊122,音頻播放模塊123對(duì)音頻緩沖模塊122中的數(shù)據(jù)進(jìn)行播放(步驟4213)。播放時(shí),音頻緩沖模塊122與音頻播放模塊123間以較小的播放單位(例如32個(gè)采樣點(diǎn))進(jìn)行數(shù)據(jù)傳輸。在步驟42中,視頻處理流程的步驟如圖6所示-現(xiàn)頻數(shù)據(jù)讀取模塊112根據(jù)影音同步控制單元14提供的視頻播放同步控制指令及參數(shù),對(duì)多媒體數(shù)據(jù)源文件中的視頻壓縮數(shù)據(jù)以幀(Frame)為單位進(jìn)行讀取(步驟4221),送到視頻解碼模塊131進(jìn)行解碼(步驟4222),結(jié)果存儲(chǔ)在視頻緩沖模塊132中(步驟4223),視頻播放模塊133對(duì)視頻緩沖模塊132中的數(shù)據(jù)進(jìn)行播放(步驟4224)。在步驟43中,影音同步控制流程如圖7所示檢測(cè)音頻播放模塊123的播放進(jìn)度并對(duì)播放進(jìn)度進(jìn)行記錄(步驟431),將記錄的音頻播放進(jìn)度與一預(yù)定值進(jìn)行比較(步驟432),當(dāng)播放進(jìn)度大于預(yù)定值時(shí),令存儲(chǔ)的播放進(jìn)度值減去預(yù)定值,并發(fā)送視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112讀取相應(yīng)幀的視頻數(shù)據(jù)(步驟433),視頻數(shù)據(jù)讀取^^莫塊112將是否響應(yīng)同步控制指令的反饋信息發(fā)送回來(lái),根據(jù)該反饋信息確定下一條同步控制指令需要讀取視頻數(shù)據(jù)的幀數(shù)(步驟434)。上述步驟43中,音頻偵測(cè)可由一音頻播放偵測(cè)4莫塊141來(lái)完成。如圖8所示,音頻播放偵測(cè)模塊141進(jìn)行音頻偵測(cè)包括如下步驟當(dāng)音頻播放模塊123從音頻緩沖模塊122中讀取一個(gè)播放單位的音頻數(shù)據(jù)時(shí),一同步計(jì)數(shù)器1411就計(jì)一次,步長(zhǎng)為播放進(jìn)度參數(shù)step(步驟81),第一比較器Ml2比較同步計(jì)數(shù)器1411的計(jì)數(shù)值和門限值(即上述預(yù)定值)(步驟82),當(dāng)同步計(jì)數(shù)器1411的計(jì)數(shù)值大于門限值gate時(shí),就發(fā)送控制信息給一命令發(fā)送模塊142,同步計(jì)數(shù)器1411計(jì)數(shù)值減去gate(步驟83)并繼續(xù)計(jì)數(shù)。音頻播放偵測(cè)模塊141根據(jù)同步計(jì)數(shù)器1411中計(jì)數(shù)的音頻數(shù)據(jù)播放情況與門限值的比較來(lái)判斷是否發(fā)送控制信息給命令發(fā)送模塊,從而控制視頻數(shù)據(jù)的播放。這樣便可以實(shí)現(xiàn)通過(guò)音頻播放進(jìn)度來(lái)同步視頻播放進(jìn)度的目的。如圖9所示,命令發(fā)送模塊142發(fā)送視頻播放同步控制指令的步驟包括步驟91:判斷命令發(fā)送模塊142是否接收到音頻播放偵測(cè)模塊141發(fā)送的控制信息,如果接到,執(zhí)行步驟92;如果未接到,等待音頻播放偵測(cè)模塊141發(fā)送控制信息;步驟92:發(fā)送視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112,同時(shí)命令計(jì)數(shù)器1421加1;步驟93:判斷收到的視頻數(shù)據(jù)讀取模塊112發(fā)送的反饋信息是否為響應(yīng)同步控制指令,如果是,執(zhí)行步驟94;如果不是,執(zhí)行步驟95;步驟94:視頻數(shù)據(jù)讀取模塊112根據(jù)命令計(jì)數(shù)器1421的計(jì)數(shù)值N+l,從當(dāng)前幀跳過(guò)N幀讀取下N+1幀的視頻數(shù)據(jù),清零命令計(jì)數(shù)器1421;步驟95:不對(duì)命令計(jì)數(shù)器1421進(jìn)行清零操作并返回步驟91。步驟94中,如果視頻數(shù)據(jù)讀取模塊112接收到N次同步控制指令均未響應(yīng),則再次接收到同步控制指令響應(yīng)后,此時(shí)命令計(jì)數(shù)器的計(jì)數(shù)值為N+l,視頻數(shù)據(jù)讀取模塊112根據(jù)命令計(jì)數(shù)器1421的計(jì)數(shù)從當(dāng)前幀跳過(guò)N幀讀取下N+l幀的視頻數(shù)據(jù)。命令發(fā)送模塊142中的命令計(jì)數(shù)器1421根據(jù)接收到的控制信息和響應(yīng)反饋信息來(lái)計(jì)數(shù),從而獲得下次同步控制指令需要讀取的視頻數(shù)據(jù)的幀數(shù)(當(dāng)前幀的下N+1幀)。進(jìn)而在音視頻數(shù)據(jù)發(fā)生不同步時(shí),根據(jù)音頻數(shù)據(jù)的播放進(jìn)度直接讀取相應(yīng)幀的視頻數(shù)據(jù)。如圖IO所示,命令發(fā)送模塊142發(fā)送控制命令還可以采用另一種方案,該方案包括如下步驟步驟101:第二命令計(jì)數(shù)器1422判斷是否接收音頻播放偵測(cè)模塊141發(fā)送的控制信息,如果接到,執(zhí)行步驟102;如果沒(méi)接到,繼續(xù)等待音頻播放偵測(cè)模塊141發(fā)送控制信息;步驟102:第二命令計(jì)數(shù)器1422的值加1;步驟103:響應(yīng)計(jì)數(shù)器1423判斷接收到的視頻數(shù)據(jù)讀取模塊112發(fā)送的反饋信息是否為響應(yīng)同步控制指令,如果是,執(zhí)行步驟104;如果不是,繼續(xù)等待視頻數(shù)據(jù)讀取模塊112發(fā)送的響應(yīng)同步控制指令的反饋信息;步驟104:響應(yīng)計(jì)數(shù)器1423的值加1;步驟105:第二比較器1424比較第二命令計(jì)數(shù)器1422和響應(yīng)計(jì)數(shù)器1423的計(jì)數(shù)值,當(dāng)響應(yīng)計(jì)數(shù)器1423無(wú)計(jì)數(shù)值時(shí),便發(fā)送讀取下一幀視頻數(shù)據(jù)的視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112;如果第二命令計(jì)數(shù)器1422的計(jì)數(shù)比響應(yīng)計(jì)數(shù)器1423的計(jì)數(shù)大M,便發(fā)送讀取當(dāng)前幀的下M幀視頻數(shù)據(jù)的視頻播放同步控制指令給視頻數(shù)據(jù)讀取模塊112;步驟106:第二比較器1424判斷接收到的視頻數(shù)據(jù)讀取^t塊112發(fā)送的反饋信息是否為響應(yīng)同步控制指令,如果是,執(zhí)行下步驟107;如果不是,繼續(xù)等待視頻數(shù)據(jù)讀取模塊112發(fā)送的響應(yīng)同步控制指令的反饋信息;步驟107:第二比較器1424清零第二命令計(jì)數(shù)器1422和響應(yīng)計(jì)數(shù)器1423。本發(fā)明在播放多媒體文件時(shí),將音視頻數(shù)據(jù)同步播放的原理如下音頻播放模塊123播放一個(gè)播放單位音頻數(shù)據(jù)的時(shí)間Ta,遠(yuǎn)小于視頻數(shù)據(jù)一幀的顯示時(shí)間Tv。由于本方法,會(huì)令同步計(jì)數(shù)器的計(jì)數(shù)大于門卩艮值gate時(shí),就發(fā)送控制信息給命令發(fā)送模塊142,同步計(jì)數(shù)器1411計(jì)數(shù)值減去gate。而同步計(jì)數(shù)器1411計(jì)數(shù)值減去gate后的計(jì)數(shù)值再次計(jì)數(shù),因此再次計(jì)數(shù)是在差值的基礎(chǔ)上的,因此會(huì)產(chǎn)生誤差。由于這個(gè)誤差,理論上本方法的視頻幀間隔誤差是正負(fù)交替的,所以同步誤差不會(huì)累積,始終小于Ta,測(cè)試表明,當(dāng)音頻數(shù)據(jù)的播放單位較小時(shí)(例如32個(gè)采樣點(diǎn)),人眼察覺(jué)不到小于Ta的誤差。具體計(jì)算時(shí),Ta=Length/Fs,Length為播放緩沖器的大小,F(xiàn)s為音頻數(shù)據(jù)采樣率;Tv對(duì)不同的多媒體數(shù)據(jù)格式會(huì)有不同的表達(dá)式,例如對(duì)AVI文件,Tv=scale/rate,scale為視頻流的時(shí)間尺度,Tv/Ta=(scale*Fs)/(rate*Length)。式中的參數(shù)最好都是整數(shù),^更于計(jì)算。令step=rate*Length;gate=scale*Fs。本發(fā)明中,在視頻解碼實(shí)時(shí)的情況下,第二命令計(jì)數(shù)器1422只有0、1兩種值。在視頻解碼不實(shí)時(shí)的情況下,視頻處理流程還沒(méi)有響應(yīng)上一個(gè)同步命令,新的命令又產(chǎn)生了,第二命令計(jì)數(shù)器1422就會(huì)不斷計(jì)數(shù),直到視頻處理流程響應(yīng)為止,如果這時(shí)第二命令計(jì)數(shù)器1422的值為N,則會(huì)把N傳給視頻數(shù)據(jù)讀取模塊112,視頻數(shù)據(jù)讀取模塊在從源文件中讀去視頻數(shù)據(jù)時(shí),會(huì)直接讀取當(dāng)前幀的下N幀,送入視頻解碼器進(jìn)行解碼,從而實(shí)現(xiàn)音視頻同步。對(duì)于沒(méi)有音頻數(shù)據(jù),只有視頻數(shù)據(jù)的文件,音頻處理流程會(huì)按默認(rèn)設(shè)置播放靜音數(shù)據(jù),來(lái)控制視頻數(shù)據(jù)的播放;對(duì)于音頻播放總時(shí)間小于視頻播放總時(shí)間的文件,在音頻播放結(jié)束后,也會(huì)播放靜音,直到視頻播放結(jié)束。另外,也可以通過(guò)一定時(shí)器設(shè)定一時(shí)間,每達(dá)到設(shè)定時(shí)間時(shí),就發(fā)送同步控制指令給視頻數(shù)據(jù)讀取模塊,命令視頻數(shù)據(jù)讀取模塊讀取一幀視頻數(shù)據(jù)進(jìn)行解碼播放。該設(shè)定的時(shí)間一般為視頻數(shù)據(jù)中每幀視頻數(shù)據(jù)的顯示時(shí)間。以上所述實(shí)施例僅是為充分說(shuō)明本發(fā)明而所舉的較佳的實(shí)施例,本發(fā)明的保護(hù)范圍不限于此。本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明基礎(chǔ)上所作的等同替代或變換,均在本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明的保護(hù)范圍以權(quán)利要求書為準(zhǔn)。權(quán)利要求1、一種多媒體文件音視頻同步播放的系統(tǒng),包括影音信號(hào)分流單元,用于將多媒體數(shù)據(jù)分成音頻數(shù)據(jù)和視頻數(shù)據(jù)并輸出;音頻處理單元,用于對(duì)所述影音信號(hào)分流單元輸出的音頻數(shù)據(jù)進(jìn)行解碼和播放;視頻處理單元,用于對(duì)所述影音信號(hào)分流單元輸出的視頻數(shù)據(jù)進(jìn)行解碼和播放;其特征在于,還包括影音同步控制單元,用于檢測(cè)所述音頻處理單元的播放進(jìn)度,并將其與一預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于該預(yù)定值時(shí),向所述影音信號(hào)分流單元發(fā)送同步控制指令,指示影音信號(hào)分流單元讀取相應(yīng)幀的視頻數(shù)據(jù)進(jìn)行輸出播放。2、如權(quán)利要求l所述的系統(tǒng),其特征在于,所述影音同步控制單元包括音頻播放偵測(cè)模塊和命令發(fā)送模塊,其中,所述音頻播放偵測(cè)模塊用于檢測(cè)所述音頻處理單元中音頻播放模塊的播放進(jìn)度并進(jìn)行記錄,所述音頻播放偵測(cè)模塊將播放進(jìn)度與所述預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于該預(yù)定值時(shí),發(fā)送控制信息給所述命令發(fā)送模塊,將所記錄的播放進(jìn)度減去所述預(yù)定值并在該差值基礎(chǔ)上繼續(xù)記錄播放進(jìn)度;所述命令發(fā)送模塊用于在接到所述控制信息后發(fā)送所述同步控制指令給所述影音信號(hào)分流單元中的視頻數(shù)據(jù)讀取模塊;所述視頻數(shù)據(jù)讀取^t塊,用于在接收到所述同步控制指令后將是否響應(yīng)同步控制指令的反饋信息發(fā)送給所述命令發(fā)送模塊;所述命令發(fā)送模塊還用于根據(jù)該反饋信息確定下一條同步控制指令需要讀取視頻數(shù)據(jù)的幀數(shù)。3、如權(quán)利要求2所述的系統(tǒng),其特征在于,所述音頻播放偵測(cè)模塊包括同步計(jì)數(shù)器和第一比較器,所述同步計(jì)數(shù)器用于當(dāng)音頻播放模塊從一音頻緩沖模塊中讀取一個(gè)播放單位的音頻數(shù)據(jù)時(shí),計(jì)數(shù)一次;所述第一比較器用于比較同步計(jì)數(shù)器的計(jì)數(shù)值和所述預(yù)定值,在同步計(jì)數(shù)值大于預(yù)定值時(shí),發(fā)送控制信息給所述命令發(fā)送模塊,并將計(jì)數(shù)值減去所述預(yù)定值,同步計(jì)數(shù)器在差值基礎(chǔ)上繼續(xù)進(jìn)行計(jì)數(shù)。4、如權(quán)利要求3所述的系統(tǒng),其特征在于,所述同步計(jì)數(shù)器的計(jì)數(shù)步長(zhǎng)step由以下公式獲得step=rate*Length;所述預(yù)定值gate通過(guò)以下公式獲得式中,Length為音頻播放緩沖器的大小,F(xiàn)s為音頻數(shù)據(jù)采樣率,scale為視頻流的時(shí)間尺度,rate為視頻流的時(shí)間尺度與每幀視頻數(shù)據(jù)播放時(shí)間的比值。5、如權(quán)利要求3或4所述的系統(tǒng),其特征在于,所述命令發(fā)送模塊包括一命令計(jì)數(shù)器,該命令計(jì)數(shù)器用于當(dāng)接收到音頻播放偵測(cè)模塊發(fā)送的控制信息后,發(fā)送同步控制指令給視頻數(shù)據(jù)讀取模塊,并將其計(jì)數(shù)加l;所述視頻數(shù)據(jù)讀取模塊接收到所述同步控制指令后根據(jù)命令計(jì)數(shù)器的計(jì)數(shù)值N+l,讀取當(dāng)前幀的下N+l頻的視頻數(shù)據(jù)并輸出播放;并且所述命令計(jì)數(shù)器接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令時(shí),清零其計(jì)數(shù)。6、如權(quán)利要求3或4所述的系統(tǒng),其特征在于,所述命令發(fā)送模塊包括第二命令計(jì)數(shù)器、響應(yīng)計(jì)數(shù)器和第二比較器,其中,所述第二命令計(jì)數(shù)器用于接收到音頻播放偵測(cè)^:莫塊發(fā)送的控制信息后將其計(jì)數(shù)值加1;所述響應(yīng)計(jì)數(shù)器用于接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后將其計(jì)數(shù)值加1;所述第二比較器用于比較所述第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的值,所述響應(yīng)計(jì)數(shù)器無(wú)計(jì)數(shù)值時(shí),發(fā)送讀取下一幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;當(dāng)所述第二命令計(jì)數(shù)器比響應(yīng)計(jì)數(shù)器的值大M時(shí),發(fā)送讀取當(dāng)前幀的下M幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;在視頻數(shù)據(jù)讀取模塊向所述第二比較器發(fā)送響應(yīng)同步控制指令的反饋信息后,第二比較器清零第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器。7、如權(quán)利要求l所述的系統(tǒng),其特征在于,該系統(tǒng)還包括一定時(shí)器,用于當(dāng)所述多媒體數(shù)據(jù)中沒(méi)有音頻數(shù)據(jù)時(shí),根據(jù)所述多媒體數(shù)據(jù)中的每幀視頻數(shù)據(jù)的播放時(shí)間進(jìn)行定時(shí),每到達(dá)定時(shí)時(shí),通知視頻數(shù)據(jù)處理單元解碼并播放一幀視頻數(shù)據(jù)。8、一種多媒體文件音視頻同步播放的方法,其特征在于,包括以下步驟根據(jù)播放的多媒體數(shù)據(jù)計(jì)算音頻數(shù)據(jù)的播放進(jìn)度參數(shù)和預(yù)定值;將多媒體數(shù)據(jù)分成音頻數(shù)據(jù)和視頻數(shù)據(jù),解碼并顯示第一幀視頻數(shù)據(jù),同時(shí)進(jìn)入音頻處理流程,解碼并播放音頻數(shù)據(jù);;險(xiǎn)測(cè)音頻數(shù)據(jù)的播放進(jìn)度并判斷音頻數(shù)據(jù)的播放進(jìn)度是否達(dá)到所述預(yù)定值,如果達(dá)到,控制視頻處理單元進(jìn)入視頻處理流程,解碼并顯示相應(yīng)幀的視頻數(shù)據(jù)。9、如權(quán)利要求8所述的方法,其特征在于,所述判斷音頻數(shù)據(jù)的播放進(jìn)度是否達(dá)到所述預(yù)定值的方法為每播放一個(gè)播放單位的音頻數(shù)據(jù)時(shí),計(jì)數(shù)一次,將計(jì)數(shù)值與所述預(yù)定值進(jìn)行比較,如果計(jì)數(shù)值大于預(yù)定值,則播放進(jìn)度達(dá)到預(yù)定值,將所記錄的播放進(jìn)度減去所述預(yù)定值,并在該差值基礎(chǔ)上繼續(xù)記錄播放進(jìn)度。10、如權(quán)利要求9所述的方法,其特征在于,所述控制視頻處理單元進(jìn)入視頻處理流程的步驟由一命令發(fā)送模塊來(lái)完成,在播放進(jìn)度達(dá)到預(yù)定值時(shí),命令發(fā)送模塊將一命令計(jì)數(shù)器的計(jì)數(shù)加1,并發(fā)送同步控制指令給視頻數(shù)據(jù)讀取模塊,所述視頻數(shù)據(jù)讀取模塊接收到所述同步控制指令后根據(jù)命令計(jì)數(shù)器的計(jì)數(shù)值N+1,讀取當(dāng)前幀的下N+l頻的視頻數(shù)據(jù)并輸出播放;并且所述命令計(jì)數(shù)器接收到視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令時(shí),清零其計(jì)數(shù)。11、如權(quán)利要求9所述的方法,其特征在于,所述控制視頻處理單元進(jìn)入視頻處理流程的方法為在播放進(jìn)度達(dá)到預(yù)定值時(shí),將一第二命令計(jì)數(shù)器加1;在接收到的視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后,將一響應(yīng)計(jì)數(shù)器加1,用一第二比較器比較第二命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的值,所述響應(yīng)計(jì)數(shù)器無(wú)計(jì)數(shù)值時(shí),發(fā)送讀取下一幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;當(dāng)所述第二命令計(jì)數(shù)器比響應(yīng)計(jì)數(shù)器的值大M時(shí),發(fā)送讀取當(dāng)前幀的下M幀視頻數(shù)據(jù)的同步控制指令給視頻數(shù)據(jù)讀取模塊;所述第二比較器在接收到的視頻數(shù)據(jù)讀取模塊發(fā)送的反饋信息為響應(yīng)同步控制指令后,將所述命令計(jì)數(shù)器和響應(yīng)計(jì)數(shù)器的計(jì)數(shù)值清零。全文摘要本發(fā)明提供了一種多媒體文件音視頻同步播放的系統(tǒng)及方法。本發(fā)明通過(guò)一影音同步控制單元,檢測(cè)音頻處理單元的音頻播放進(jìn)度,并將其與一預(yù)定值進(jìn)行比較,當(dāng)播放進(jìn)度大于該預(yù)定值時(shí),向影音信號(hào)分流單元發(fā)送同步控制指令,指示影音信號(hào)分流單元讀取相應(yīng)幀的視頻數(shù)據(jù)進(jìn)行輸出播放,來(lái)實(shí)現(xiàn)音視頻同步播放。本發(fā)明不需要多媒體數(shù)據(jù)中包含時(shí)間戳,可以有效減輕編碼器及解碼器的負(fù)擔(dān);同步控制過(guò)程運(yùn)算量小,適用于運(yùn)算能力較差的平臺(tái),因此可廣泛應(yīng)用于便攜式移動(dòng)設(shè)備播放多媒體數(shù)據(jù)時(shí)的音視頻同步;本發(fā)明對(duì)硬件平臺(tái)的要求很低,硬件平臺(tái)結(jié)構(gòu)簡(jiǎn)單,成本低。文檔編號(hào)H04N7/62GK101262612SQ200810088019公開(kāi)日2008年9月10日申請(qǐng)日期2008年3月27日優(yōu)先權(quán)日2008年3月27日發(fā)明者莉溫,欣高,魯弘茂申請(qǐng)人:凌陽(yáng)科技股份有限公司;凌通科技股份有限公司;北京北陽(yáng)電子技術(shù)有限公司