專利名稱:基于mpeg-2視頻流的音視頻同步控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及音視頻解碼領(lǐng)域,尤其涉及一種基于MPEG-2視頻流的音視頻同步控制方法。
背景技術(shù):
中國(guó)發(fā)明專利申請(qǐng)?zhí)枮椤?00610017021.X”,專利名稱為“音視頻信號(hào)同步方法”的專利申請(qǐng)文件中公開(kāi)了一種音視頻同步方法,利用MPEG-2、AVS等視頻編碼系統(tǒng)中經(jīng)過(guò)量化后的系數(shù)塊中具有最小距離的兩個(gè)中低頻系統(tǒng)的相關(guān)性,將壓縮后的音頻編碼比特嵌入其中的一個(gè)系數(shù),然后對(duì)嵌入壓縮音頻比特的系數(shù)塊按原視頻編碼系統(tǒng)中的方案進(jìn)行變長(zhǎng)編碼或算術(shù)編碼得到混合信號(hào)的編碼比特流,并能在解碼器中根據(jù)提出的音頻比特回復(fù)被嵌視頻系數(shù),為音視頻信號(hào)同步系統(tǒng)提供關(guān)鍵的技術(shù)支持。MPEG-2中定義了兩種復(fù)合信息流傳送流(TS transition stream)和節(jié)目流 (PS =Program Mream),這兩種復(fù)合流同樣以基本打包流(PES :Packetized Elementary Stream)為基礎(chǔ)。在傳送流TS中,TS包頭加入了 PCR(節(jié)目時(shí)鐘參考),而在節(jié)目流PS包頭中加入SCR(系統(tǒng)時(shí)鐘參考),分別用于解碼器在解碼過(guò)程中的STC(系統(tǒng)時(shí)序時(shí)鐘)恢復(fù), 以此為基準(zhǔn)達(dá)到音視頻的同步。目前,市場(chǎng)上的嵌入式視頻解碼芯片方案,有部分只能支持TS流,對(duì)于PS流的視頻,則需要做轉(zhuǎn)碼工作,而由于嵌入式系統(tǒng)性能的局限,要完美實(shí)現(xiàn)PCR包的構(gòu)造十分困難,PCR的失準(zhǔn)或缺失將會(huì)造成STC無(wú)法恢復(fù),從而使音視頻同步缺失基準(zhǔn)無(wú)法達(dá)到同步。
發(fā)明內(nèi)容
本發(fā)明主要解決的技術(shù)問(wèn)題是提供一種基于MPEG-2嵌入式系統(tǒng)中視頻流的音視頻同步控制方法,該方法不依賴于TS流的PCR信息或PS流的SCR信息,在PCR信息或SCR 信息失準(zhǔn)時(shí)也可以達(dá)到音視頻同步控制效果。為解決上述技術(shù)問(wèn)題,本發(fā)明采用的一個(gè)技術(shù)方案是提供一種基于MPEG-2視頻流的音視頻同步控制方法,包括以下步驟a.啟動(dòng)解碼器;b.當(dāng)獲取到第一音頻幀或第一視頻幀數(shù)據(jù)時(shí),利用當(dāng)前的音頻或視頻PTS校正系統(tǒng)STC值;c.當(dāng)獲取到新的視頻幀同時(shí)讀取系統(tǒng)STC值,并計(jì)算系統(tǒng)STC值與視頻幀的PTS 值的差值,如果視頻幀的PTS值大于系統(tǒng)STC值的差值超過(guò)同步閾值,則重復(fù)顯示當(dāng)前顯示幀,并檢查等待系統(tǒng)STC值直到與視頻幀的PTS值相等才顯示新的幀;如果視頻幀的PTS值小于系統(tǒng)STC值的差值超過(guò)同步閾值,則丟棄該幀,繼續(xù)解碼下一幀,直到獲取到的新視頻幀的PTS值與當(dāng)前的系統(tǒng)STC值相等,顯示該幀;d.在解碼新的音頻幀數(shù)據(jù)同時(shí)讀取系統(tǒng)STC值,將新音頻幀的PTS值與得到的系統(tǒng)STC值對(duì)比,如果系統(tǒng)STC值和音頻幀的PTS值的差值超過(guò)同步閾值,則以當(dāng)前音頻幀的PTS值恢復(fù)系統(tǒng)STC值;e.重復(fù)步驟C、步驟d,直到解碼完畢。其中,對(duì)于有自動(dòng)同步機(jī)制的系統(tǒng),在步驟a之前還包括禁止音頻與視頻的同步操作的步驟;對(duì)于沒(méi)有自動(dòng)同步機(jī)制的系統(tǒng),使步驟c的同步操作在步驟b之前無(wú)效。其中,在步驟b中,PTS信息由解碼器從節(jié)目源的PES流中提取。其中,在步驟b中,PTS信息值是編碼器對(duì)一個(gè)27MHz的時(shí)鐘進(jìn)行300分頻后得到的計(jì)數(shù)值記錄,解碼器使用相同的27MHz時(shí)鐘進(jìn)行300分頻作為STC時(shí)鐘。其中,在步驟c中,同步閾值為相鄰兩幀之間STC的計(jì)數(shù)值。其中,在步驟d中,同步閾值為IOOms內(nèi)的STC時(shí)鐘計(jì)數(shù)值。本發(fā)明的有益效果是區(qū)別于現(xiàn)有技術(shù)的以PS流和TS流中的節(jié)目時(shí)鐘參考PCR 和系統(tǒng)時(shí)鐘參考SCR來(lái)進(jìn)行STC時(shí)鐘校準(zhǔn)的方法,產(chǎn)生在嵌入式系統(tǒng)中無(wú)法同步的缺陷,本發(fā)明繞開(kāi)了 PS流和TS流中特有的信息依賴,直接以PES流中的PTS信息進(jìn)行STC時(shí)鐘校準(zhǔn),這樣在PCR或SCR失準(zhǔn)的情況下也可以達(dá)到同步效果。進(jìn)一步地,本發(fā)明對(duì)于需要PS流轉(zhuǎn)換為T(mén)S流或TS流裝換為PS流的解決方案,轉(zhuǎn)化處理程序不須重建TS流的PCR包或PS流的SCR包,降低了系統(tǒng)處理器的負(fù)荷,簡(jiǎn)化了程序?qū)崿F(xiàn)難度。
圖1是本發(fā)明的基于MPEG-2視頻流的音視頻同步控制方法實(shí)施例流程圖;圖2是本發(fā)明以音頻流為基準(zhǔn)碼流同步控制方法的實(shí)現(xiàn)流程圖。
具體實(shí)施例方式為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說(shuō)明。本發(fā)明中的英文縮寫(xiě)的定義為T(mén)S流,中文意思為傳送流,英文全稱為transition stream。PS流,中文意思為節(jié)目流,英文全稱為Program Mream。PES流,中文意思為基本打包流,英文全稱為Packetized ElementaryStream0PCR,中文意思為節(jié)目時(shí)鐘參考,英文全稱為Program ClockReference。SCR,中文意思為系統(tǒng)時(shí)鐘參考;英文全稱為System ClockReference。STC,中文意思為系統(tǒng)時(shí)序時(shí)鐘;英文全稱為System Time Clock。PTS,中文意思為顯示時(shí)間戳;英文全稱為Presentation Time Mamp。PCR是STC校正基準(zhǔn),用于STC的校正,SCR與PCR作用相似,區(qū)別在于PCR用于TS 流結(jié)構(gòu),SCR用于PS流結(jié)構(gòu);PTS值用于標(biāo)識(shí)當(dāng)前幀應(yīng)當(dāng)在STC為何值時(shí)被顯示。本發(fā)明提供了在解碼時(shí)鐘恢復(fù)參考失準(zhǔn)情況下實(shí)現(xiàn)音視頻同步控制的方法,利用 MPEG-2PES (基本打包流)中攜帶的音視頻PTS (顯示時(shí)間戳)信息來(lái)進(jìn)行顯示幀校準(zhǔn)。MPEG-2的系統(tǒng)結(jié)構(gòu)分為三部分1)視頻編碼和音頻編碼,輸出視頻或音頻基本碼流ES ;2)經(jīng)過(guò)打包,輸出打包了的基本碼流PES,該階段在每幀數(shù)據(jù)中加入了 PTS信息,用于指示該視頻或音頻幀應(yīng)當(dāng)何時(shí)被顯示,解碼器在解碼時(shí)進(jìn)行PTS與STC對(duì)齊操作,以完成音視頻同步控制;3)再經(jīng)過(guò)兩種不同的打包和復(fù)用形成節(jié)目流PS和傳送流TS,該階段在包序列中加入了 STC恢復(fù)參考,在PS流中為SCR,在TS流中為PCR,解碼器在接收到這兩種數(shù)據(jù)包后會(huì)根據(jù)解析到的SCR值或PCR值設(shè)置STC時(shí)鐘計(jì)數(shù)器,以校準(zhǔn)STC時(shí)鐘。根據(jù)該原理,無(wú)論是PS流還是TS流,都是以相同PES流為基礎(chǔ)。本發(fā)明利用了這個(gè)特征,繞開(kāi)了 PS流和TS流中特有的信息依賴,直接以PES流中PTS信息進(jìn)行STC時(shí)鐘校準(zhǔn),這樣在PCR或SCR失準(zhǔn)的情況下也可以達(dá)到同步效果,其基本方案為首先,選取音視頻流中的一個(gè)碼流作為基礎(chǔ)碼流;其次,在解碼過(guò)程中,解碼器從該碼流攜帶的幀數(shù)據(jù)中提取PTS信息,并判斷該P(yáng)TS值與STC的差值,當(dāng)兩者相差超過(guò)同步閾值時(shí)利用PTS值設(shè)置STC時(shí)鐘計(jì)數(shù)器;而后,在解碼過(guò)程中,相對(duì)于基準(zhǔn)碼流,非基準(zhǔn)碼流要根據(jù)攜帶的PTS信息與STC進(jìn)行對(duì)齊操作。這樣,通過(guò)STC作為音視頻PTS值的中間傳遞,可以排除音視頻幀非均勻交叉解碼造成PTS跳變問(wèn)題,相比直接使用音視頻PTS進(jìn)行同步控制的算法有更好的效果,且可以利用解碼系統(tǒng)的自動(dòng)同步功能,減少了軟件操作工作量。請(qǐng)參閱圖1,本發(fā)明的基于MPEG-2視頻流的音視頻同步控制方法,包括以下步驟a.啟動(dòng)解碼器;b.當(dāng)獲取到第一音頻幀或第一視頻幀數(shù)據(jù)時(shí),利用當(dāng)前的音頻或視頻PTS校正系統(tǒng)STC值;c.當(dāng)獲取到新的視頻幀同時(shí)讀取系統(tǒng)STC值,并計(jì)算系統(tǒng)STC值與視頻幀的PTS 值的差值,如果視頻幀的PTS值大于系統(tǒng)STC值的差值超過(guò)同步閾值,則重復(fù)顯示當(dāng)前顯示幀,并檢查等待系統(tǒng)STC值直到與視頻幀的PTS值相等才顯示新的幀;如果視頻幀的PTS值小于系統(tǒng)STC值的差值超過(guò)同步閾值,則丟棄該幀,繼續(xù)解碼下一幀,直到獲取到的新視頻幀的PTS值與當(dāng)前的系統(tǒng)STC值相等,顯示該幀;d.在解碼新的音頻幀數(shù)據(jù)同時(shí)讀取系統(tǒng)STC值,將新音頻幀的PTS值與得到的系統(tǒng)STC值對(duì)比,如果系統(tǒng)STC值和音頻幀的PTS值的差值超過(guò)同步閾值,則以當(dāng)前音頻幀的 PTS值恢復(fù)系統(tǒng)STC值;e.重復(fù)步驟C、步驟d,直到解碼完畢。對(duì)于有自動(dòng)同步機(jī)制的系統(tǒng),在步驟a之前還包括禁止音頻與視頻的同步操作的步驟;對(duì)于沒(méi)有自動(dòng)同步機(jī)制的系統(tǒng),使步驟c的同步操作在步驟b前無(wú)效。在步驟b中,PTS信息由解碼器從節(jié)目源的PES流中提取。在步驟b中,PTS信息值是編碼器對(duì)一個(gè)27MHz的時(shí)鐘進(jìn)行300分頻后得到的計(jì)數(shù)值記錄,解碼器使用相同的27MHz時(shí)鐘進(jìn)行300分頻作為STC時(shí)鐘。在步驟c中,同步閾值為相鄰兩幀之間STC的計(jì)數(shù)值。在步驟d中,同步閾值為IOOms內(nèi)的STC時(shí)鐘計(jì)數(shù)值。參見(jiàn)圖2,以音頻流為基準(zhǔn)碼流的音視頻同步方法,包括以下步驟步驟一在解碼器啟動(dòng)前禁止音頻與視頻的同步操作,啟動(dòng)解碼器;在該步驟,禁止音視頻同步操作是針對(duì)有自動(dòng)同步機(jī)制的系統(tǒng),對(duì)于沒(méi)有自動(dòng)同步機(jī)制的系統(tǒng),只要保證步驟三的同步操作在步驟二之前無(wú)效即可;
步驟二 當(dāng)獲取到第一音頻幀數(shù)據(jù)時(shí),利用當(dāng)前的音頻PTS恢復(fù)STC。在STC恢復(fù)之后,若系統(tǒng)有硬件自動(dòng)同步機(jī)制可開(kāi)啟視頻自動(dòng)同步,否則,根據(jù)步驟三提供的操作進(jìn)行視頻同步操作;在該步驟,PTS信息由解碼器從節(jié)目源的PES流中提取,該信息由MPEG-2標(biāo)準(zhǔn)在編碼時(shí)添加,該信息值是編碼器對(duì)一個(gè)27MHz的時(shí)鐘進(jìn)行300分頻后得到的計(jì)數(shù)值記錄,解碼器使用相同的27MHz時(shí)鐘進(jìn)行300分頻作為STC時(shí)鐘,因此,STC的恢復(fù)操作既將STC時(shí)鐘的計(jì)數(shù)器設(shè)置為當(dāng)前解碼得到的PTS值。步驟三當(dāng)獲取到新的視頻幀同時(shí)讀取STC值,并計(jì)算STC與PTS的差值,如果PTS 值大于STC值超過(guò)同步閾值,則重復(fù)顯示當(dāng)前顯示幀,并檢查等待STC直到與PTS值相等才顯示新的幀;如果PTS小于STC超過(guò)同步閾值,則丟棄該幀,繼續(xù)解碼下一幀并獲取新的 STC值對(duì)比,直到獲取到的新幀PTS與當(dāng)前的STC值相等,顯示該幀;在該步驟,STC值已經(jīng)通過(guò)音頻PTS進(jìn)行校準(zhǔn),視頻PTS與STC差值的邏輯是如果PTS值大于STC值則說(shuō)明視頻相對(duì)于音頻靠前,因此需要重復(fù)顯示當(dāng)前顯示幀以等待音頻解碼前進(jìn)到當(dāng)前點(diǎn);如果PTS值小于STC值則說(shuō)明視頻相對(duì)于音頻落后,因此需要丟棄當(dāng)前幀,以達(dá)到跳幀快進(jìn)的效果追趕音頻解碼當(dāng)前點(diǎn);在該步驟,同步閾值可根據(jù)實(shí)際情況設(shè)定,通常為相鄰兩幀之間STC的計(jì)數(shù)值,比如,對(duì)于 25fps 的視頻,其閾值為(ls/25fps*27MHz/300 = 3600);步驟四在解碼新的音頻幀數(shù)據(jù)同時(shí)讀取STC值,將新幀的PTS值與得到的STC值對(duì)比,如果STC和PTS差值超過(guò)同步閾值,則以當(dāng)前PTS值恢復(fù)STC ;在該步驟,同步閾值可根據(jù)實(shí)際情況設(shè)定,根據(jù)標(biāo)準(zhǔn),當(dāng)音頻超前視頻80ms,或者音頻落后視頻120ms則認(rèn)得感官能夠有輕微覺(jué)察,而實(shí)際上該誤差可接受范圍甚至達(dá)到 200ms,因此,該閾值通常可設(shè)為IOOms內(nèi)的STC時(shí)鐘計(jì)數(shù)值,即(0. ls*27MHz/300 = 9000), 需要注意的是,過(guò)小的閾值可能引起音視頻不斷的調(diào)整,從而造成不能流暢播放的問(wèn)題;步驟五重復(fù)步驟三、步驟四,直到解碼完畢。另外,由于STC時(shí)鐘在解碼器暫停狀態(tài)下不會(huì)暫停,在解碼恢復(fù)后STC需要重新恢復(fù),STC恢復(fù)前的視頻幀會(huì)進(jìn)行錯(cuò)誤的同步操作,為解決該問(wèn)題,可在解碼器暫停前先禁止音視頻同步操作,而在恢復(fù)播放后重新開(kāi)啟同步。本發(fā)明利用音頻流或視頻流作為基準(zhǔn)碼流恢復(fù)STC,并以此為基準(zhǔn)進(jìn)行同步控制, 開(kāi)始解碼時(shí)禁止同步操作,在獲取到基準(zhǔn)碼流的第一幀PTS信息時(shí)恢復(fù)STC,并以此為基準(zhǔn)進(jìn)行音視頻同步控制。本發(fā)明選擇第一音頻或者第一視頻作為基準(zhǔn)碼流,并以基準(zhǔn)碼流PTS為標(biāo)準(zhǔn)時(shí)鐘調(diào)整STC,另一路碼流在獲取新幀時(shí)與STC對(duì)齊。以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種基于MPEG-2視頻流的音視頻同步控制方法,其特征在于包括以下步驟a.啟動(dòng)解碼器;b.當(dāng)獲取到第一音頻幀或第一視頻幀數(shù)據(jù)時(shí),利用當(dāng)前的音頻或視頻PTS校正系統(tǒng) STC 值;C.當(dāng)獲取到新的視頻幀同時(shí)讀取系統(tǒng)STC值,并計(jì)算系統(tǒng)STC值與視頻幀的PTS值的差值,如果視頻幀的PTS值大于系統(tǒng)STC值的差值超過(guò)同步閾值,則重復(fù)顯示當(dāng)前顯示幀, 并檢查等待系統(tǒng)STC值直到與視頻幀的PTS值相等才顯示新的幀;如果視頻幀的PTS值小于系統(tǒng)STC值的差值超過(guò)同步閾值,則丟棄該幀,繼續(xù)解碼下一幀,直到獲取到的新視頻幀的PTS值與當(dāng)前的系統(tǒng)STC值相等,顯示該幀;d.在解碼新的音頻幀數(shù)據(jù)同時(shí)讀取系統(tǒng)STC值,將新音頻幀的PTS值與得到的系統(tǒng) STC值對(duì)比,如果系統(tǒng)STC值和音頻幀的PTS值的差值超過(guò)同步閾值,則以當(dāng)前音頻幀的 PTS值恢復(fù)系統(tǒng)STC值;e.重復(fù)步驟C、步驟d,直到解碼完畢。
2.根據(jù)權(quán)利要求1所述的基于MPEG-2視頻流的音視頻同步控制方法,其特征在于對(duì)于有自動(dòng)同步機(jī)制的系統(tǒng),在步驟a之前還包括禁止音頻與視頻的同步操作的步驟;對(duì)于沒(méi)有自動(dòng)同步機(jī)制的系統(tǒng),使步驟c的同步操作在步驟b之前無(wú)效。
3.根據(jù)權(quán)利要求2所述的基于MPEG-2視頻流的音視頻同步控制方法,其特征在于在步驟b中,PTS信息由解碼器從節(jié)目源的PES流中提取。
4.根據(jù)權(quán)利要求3所述的基于MPEG-2視頻流的音視頻同步控制方法,其特征在于在步驟b中,PTS信息值是編碼器對(duì)一個(gè)27MHz的時(shí)鐘進(jìn)行300分頻后得到的計(jì)數(shù)值記錄,解碼器使用相同的27MHz時(shí)鐘進(jìn)行300分頻作為STC時(shí)鐘。
5.根據(jù)權(quán)利要求1 4任一項(xiàng)所述的基于MPEG-2視頻流的音視頻同步控制方法,其特征在于在步驟c中,同步閾值為相鄰兩幀之間STC的計(jì)數(shù)值。
6.根據(jù)權(quán)利要求5任一項(xiàng)所述的基于MPEG-2視頻流的音視頻同步控制方法,其特征在于在步驟d中,同步閾值為IOOms內(nèi)的STC時(shí)鐘計(jì)數(shù)值。
全文摘要
本發(fā)明公開(kāi)了一種基于MPEG-2視頻流的音視頻同步控制方法,本發(fā)明繞開(kāi)了PS流和TS流中特有的信息依賴,直接以PES流中的PTS信息進(jìn)行STC時(shí)鐘校準(zhǔn),這樣在PCR或SCR失準(zhǔn)的情況下也可以達(dá)到同步效果。本發(fā)明對(duì)于需要PS流轉(zhuǎn)換為T(mén)S流或TS流裝換為PS流的解決方案,轉(zhuǎn)化處理程序不須重建TS流的PCR包或PS流的SCR包,降低了系統(tǒng)處理器的負(fù)荷,簡(jiǎn)化了程序?qū)崿F(xiàn)難度。
文檔編號(hào)H04N7/24GK102547299SQ201010614889
公開(kāi)日2012年7月4日 申請(qǐng)日期2010年12月30日 優(yōu)先權(quán)日2010年12月30日
發(fā)明者劉旺, 吳方方, 鄒應(yīng)雙 申請(qǐng)人:福建星網(wǎng)視易信息系統(tǒng)有限公司