專利名稱:用于補償音頻視頻流中時序不匹配的方法
技術領域:
本發(fā)明是關于一種數(shù)據(jù)處理的補償方法,尤指一種用于補償音頻視頻流中 時序不匹配的方法。
背景技術:
數(shù)字系統(tǒng)針對數(shù)據(jù)流(datastream)進行編碼以減少需要通過網(wǎng)絡傳送的數(shù) 據(jù)數(shù)量。編碼也可以保護數(shù)據(jù)免于被非法存取。
當編碼音頻視頻數(shù)據(jù)(audio-visual data)時,分別使用單獨的視頻編碼器及 音頻編碼器,然后這些單獨編碼的數(shù)據(jù)流通過多任務器進行多任務處理 (multiplexed)。因此,數(shù)據(jù)流的時序非常重要。如果在時序中發(fā)生了誤差,當 觀眾觀看時,聲音與畫面就會因不同步而導致偏差。
時序不匹配(timingmismatch)發(fā)生的原因有很多。有時,視頻編碼器會在 編碼過程中異常中斷(abort),例如由于處理到壞的數(shù)據(jù)而發(fā)生中斷。視頻編碼 器隨后需要重新啟動,但是,在重新啟動的期間里,照常編碼的音頻幀(frame) 仍然繼續(xù)被多任務器接收。由于沒有視頻幀與持續(xù)進入的音頻幀進行多任務處 理,因此發(fā)生了時序不匹配,并且隨時間積累而增大誤差。
另一個例子為當信號源系統(tǒng)改變時,視頻編碼器以低于預期的幀率(frame rate)進行編碼。因此, 一個視頻幀到達的實際時間比應該到達的預期時間要遲。 盡管初始誤差很小,但是隨時間的積累,最終對觀眾來說會變得很明顯。
最后一例為信號源不穩(wěn)定。在這種情況下,視頻編碼器試圖以初始幀率 進行編碼,但是由于信號的不穩(wěn)定,視頻編碼器將以低于預期的幀率進行編碼, 因而造成i吳差。
發(fā)明內容
為了解決音頻視頻流中時序不匹配,造成聲音與畫面不同步的現(xiàn)象,本發(fā)明提供了 一種用于4卜償音頻視頻流中時序不匹配的方法。
一種用于補償音頻視頻流中時序不匹配的方法,包括提供視頻編碼器; 從視頻編碼器接收當前畫面組的至少一編碼后的視頻幀,以及接收至少一編碼 后的音頻幀;當視頻編碼器中出現(xiàn)異常時,產(chǎn)生至少一空殼視頻幀;以及利用 該至少 一 空殼一見頻幀代^,當前畫面組的的該至少 一一見頻幀。
一種用于補償音頻^L頻流中時序不匹配的方法,包括接收畫面組的至少 一編碼后的視頻幀,以及接收至少一編碼后的音頻幀;判定畫面組的每一視頻 幀的誤差值;當當前幀的誤差值與先前幀的誤差值的差別大于第一閾值時,計 算畫面組中的最后^L頻幀的誤差值以作為畫面組誤差值;當畫面組誤差值大于 或等于第二閾值時,產(chǎn)生空殼一見頻幀;以及利用空殼一見頻幀填補畫面組。
本發(fā)明提供了一種用于補償音頻視頻流中時序不匹配的方法,可以修正音 頻^L頻流中的時序不匹配,避免聲音與畫面不同步的現(xiàn)象。
圖1所示為依據(jù)本發(fā)明第一實施例的方法步驟的流程圖。 圖2所示為依據(jù)本發(fā)明第二實施例的方法步驟的流程圖。
具體實施例方式
在說明書及權利要求當中使用了某些詞匯來指稱特定的組件。所屬領域技 術人員應可理解,制造商可能會用不同的名詞來稱呼同樣的組件。本說明書及 權利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差 異來作為區(qū)分的基準。
如上文4是到,在多種情況下,音頻幀及一見頻幀之間存在時序不匹配,因為
從視頻編碼器所接收到的視頻幀多于或少于預期的視頻幀數(shù)量。本發(fā)明提供了 一種方法,通過產(chǎn)生并插入一個或多個空殼視頻幀(dummy video frame),或者 通過刪除一個或多個幀來糾正上述差異。插入空殼幀可以采用多種方法實現(xiàn), 如通過改變幀標頭(frame header)中的特定比特實現(xiàn),通過重復先前的幀實現(xiàn), 或通過插入特殊制作的幀實現(xiàn)。
很多視頻編碼標準已有定義空殼幀(P0),這些空殼幀是用來代替丟失的視 頻幀,例如MPEG-4 ( Moving Pictures Experts Group 4 )片示準定義了 VOP-coded-0零參考(zero-reference )幀,并且為包含先前參考幀內 容的視頻幀。在適當?shù)赜嬎阋纛l幀以及視頻幀之間的時序誤差之后,通過對音 頻視頻數(shù)據(jù)流中插入這些零參考/空殼幀,即可糾正時序誤差。
在上文描述的第一種情況中,視頻編碼器出現(xiàn)異常中斷后,所有目前畫面 組(group of picture, GOP)的幀都應該舍棄,因為在這些幀中可能帶有錯誤。 請注意,術語GOP在本發(fā)明中用于代表一定數(shù)量的視頻幀,并不限于MPEG標 準定義的GOP結構。由于視頻編碼與音頻編碼是各自運行的,此時仍然由音頻 編碼器處照常接收編碼后的音頻幀。本方法的實施例利用最終參考幀(last reference frame)來產(chǎn)生多個空殼^L頻幀(例如,利用先前GOP的最后一個P 幀來產(chǎn)生多個空殼視頻幀),并且用這些空殼視頻幀代替已經(jīng)進行多任務處理的 當前GOP的視頻幀。而且,將視頻編碼器關閉,然后重新啟動。在此期間內, 當更多的來自音頻編碼器的音頻幀到達時,系統(tǒng)持續(xù)對這些音頻幀和空殼視頻 幀進行多任務處理。
當新的視頻幀從視頻編碼器到達時,換言之,視頻編碼器已經(jīng)重新啟動成 功,則對當前的GOP填補(pad)空殼視頻幀,這些空殼視頻幀的時序必須與 音頻幀的時序相等。再將空殼視頻幀的持續(xù)時間加入到總錄制時間當中,這樣 就完成了當前GOP的多任務處理,然后^_可以恢復正常流程,開始下一 GOP 的正常多任務處理。
為更清楚地描述這一過程,請參照圖1。圖1所示為依據(jù)本發(fā)明第一實施例 的補償方法的流程圖。步驟如下
步驟100:開始;
步驟102:判斷是否偵測到視頻編碼器異常中斷,若是,則進入步驟104, 否則進入步驟118;
步驟104:重新啟動視頻編碼器,利用當前GOP的最近一個編碼后的視頻 幀作為參考以產(chǎn)生多個空殼視頻幀;
步驟106:將一個或多個當前GOP的多任務處理后的視頻幀替換為空殼視 頻幀;
步驟108:判斷是否有新的視頻幀來自一見頻編碼器,若有則進入步驟112, 否則進入步驟110;步驟110:對音頻幀與空殼視頻幀進行多任務處理,返回步驟108; 步驟112:對音頻幀與空殼視頻幀進行多任務處理直到當前GOP完成; 步驟114:將進行多任務處理的空殼視頻幀的持續(xù)時間加入到總錄制時間; 步驟116:完成當前GOP并繼續(xù)正常流程; 步驟118:以正常流程對音頻-現(xiàn)頻幀進行多任務處理; 步驟120:結束。
上文提到過信號源不穩(wěn)定或者信號源系統(tǒng)發(fā)生改變的情況。在對音頻視頻 數(shù)據(jù)流進行多任務處理時,這兩種情況也可引起同步誤差。在這兩種情況中, 編碼后的視頻幀從視頻編碼器到達的實際時間會與預計時間不同。當信號源的 幀率低于預期時,本發(fā)明的第二實施例也利用產(chǎn)生空殼視頻幀的方法糾正此誤 差。若視頻幀率高于預期,則舍棄一些視頻幀以糾正此誤差。在一些實施例中, 通常選擇保留參考幀,舍棄雙向幀(bidirectional frame, B frame )。
依據(jù)視頻幀來自編碼器的真正時間以及電視系統(tǒng)的播映時戳(presentation time stamp, PTS)周期,本發(fā)明的第二實施例計算視頻幀到達的實際時間與預 計時間的差別。方程如下
(1) Errn = PTSn + Acc—Video—Adjust — PTS—Period * n
其中PTSn為第n個幀由視頻編碼器輸出的真正時間,Acc—Video—Adjust為 累積調整值(accumulated adjustment),并且初始值為零。對于全國電視系統(tǒng)委 員會(National Television System Committee, NTSC )系統(tǒng)而言,PTS—Period為 3003*(1/90,000)秒;對于逐行倒相(Phase Alternating Line, PAL)系統(tǒng)而言, PTS—Period為3600*(l/90,000)秒。
當Errn-Errn-1大于或等于第一閾值時,系統(tǒng)開始進行誤差處理。首先,當 前GOP的所有幀均以正常流程進行多任務處理,然后計算GOP中最后幀的誤 差(在此稱為GOP誤差值)并將其與第二閾值進行比較。如果GOP誤差值大 于第二閾值,則對GOP尾部插入第一個空殼視頻幀。從GOP誤差值以及 Acc—Video—Adjust中減去PTS—Period,并將PTS—Period力。入到總錄制時間。如 果調整后的GOP誤差值仍然大于第二闊值,則插入第二個空殼視頻幀,并使用 PTS—Period調整GOP誤差值、Acc—Video—Adjust以及總錄制時間。繼續(xù)此過程 直到GOP誤差值小于第二閾值。第 一 閣值用以判斷兩個幀之間的誤差是否足夠大而啟動誤差處理機制。比 如,累積誤差小于幀周期(例如,1/30秒)時不能通過插入或舍棄視頻幀來進
行補償。此類微小的誤差可通過調整播映時戳(presentation time stamp, PTS)
來進行補償。
為更加清楚地描述這一過程,請參照圖2。圖2所示為依據(jù)本發(fā)明第二實施 例的補償方法的流程圖。步驟如下 步驟200:開始;
步驟202:計算當前GOP每一視頻幀的誤差;
步驟204:判斷當前幀誤差與先前幀誤差之間的差別是否大于或等于第一閾
值?若是,則進入步驟206,否則進入步驟220;
步驟206:以正常流程對當前GOP的所有幀進行多任務處理;
步驟208:計算當前GOP的最后幀的誤差以決定GOP誤差;
步驟210:判斷GOP誤差是否大于或等于第二閾值?若是,則進入步驟212,
否則進入步驟224;
步驟212:利用最后一個參考視頻幀產(chǎn)生多個空殼視頻幀,并且對當前GOP 的尾部填充一個空殼^L頻幀;
步驟214:從GOP誤差中減去PTS—Period;
步驟216:從Acc—Video—Adjust中減去PTS—Period;
步驟218:將PTS—Period加入到總錄制時間,并且返回步驟210;
步驟220:以正常流程對幀進行多任務處理;
步驟222:判斷該幀是否為最后幀?若是,則進入步驟226,否則返回步驟
202;
步驟224:完成當前GOP并且返回步驟202; 步驟226:結束。
通過產(chǎn)生空殼幀,可依據(jù)視頻數(shù)據(jù)與音頻數(shù)據(jù)之間的時序不匹配對當前 GOP進行選擇性的填補。由于空殼視頻幀的參考幀已經(jīng)進行過編碼,故只需最 小限度的計算。而且,空殼視頻幀可以選擇性地填補到GOP中以糾正幀率編碼 誤差。因此,利用空殼幀填補GOP可以恢復所需的幀率。
在其它實施例中,除GOP尾部以外,空殼幀也可插入到其它位置,例如,插入到GOP頭部、GOP中部或者插入到GOP的多個部分。
雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何熟 習此技藝者,在不脫離本發(fā)明的精神和范圍內,當可做各種的更動與潤飾,故 本發(fā)明的保護范圍當視權利要求所界定者為準。
權利要求
1. 一種用于補償音頻視頻流中時序不匹配的方法,包括提供視頻編碼器;從該視頻編碼器接收當前畫面組的至少一編碼后的視頻幀,另接收至少一編碼后的音頻幀;當該視頻編碼器中出現(xiàn)異常時,產(chǎn)生至少一空殼視頻幀;以及利用該至少一空殼視頻幀代替該當前畫面組的該至少一視頻幀。
2. 如權利要求1所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,更包括利用先前畫面組的最近的編碼后視頻幀作為參考,產(chǎn)生該至少一空殼纟見頻幀。
3. 如權利要求1所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,更包括當出現(xiàn)該異常時,重新啟動該一見頻編碼器;其中利用該至少 一 空殼一見頻幀代替該當前畫面組的該至少 一一見頻幀的步驟包括對該至少一編碼后的音頻幀與該至少一空殼視頻幀進行多任務處理;以及當由該視頻編碼器接收到下一視頻幀時,繼續(xù)對該至少一編碼后的音頻幀與該至少 一 空殼視頻幀進行多任務處理以完成該當前畫面組。
4. 如權利要求3所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,更包括添加該填補的空殼視頻幀的持續(xù)時間至該音頻視頻流的總錄制時間。
5. 如權利要求1所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,該至少一空殼視頻幀是通過改變幀標頭的比特而產(chǎn)生。
6. —種用于補償音頻碎見頻流中時序不匹配的方法,包4舌接收畫面組的至少一編碼后的視頻幀,以及接收至少一編碼后的音頻幀;決定該畫面組的每一纟見頻幀的i吳差^f直;在當前幀的誤差值與先前幀的誤差值的差別大于第一閾值時,確定該畫面組中的最后視頻幀的誤差值以產(chǎn)生畫面組誤差值;當該畫面組誤差值大于或等于第二閾值時,產(chǎn)生空殼視頻幀;以及利用該空殼視頻幀填補該畫面組。
7. 如權利要求6所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,利用該最后視頻幀作為參考幀以產(chǎn)生該空殼—見頻幀。
8. 如權利要求6所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,通過比較該最后^L頻幀的實際時間與預計時間以決定該畫面組誤差值,該預計時間是依據(jù)預計幀率決定。
9. 如權利要求6所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,利用該空殼視頻幀填#卜該畫面組的步驟包括對該畫面組尾部插入該空殼一見頻幀;依據(jù)該插入的空殼視頻幀調整該畫面組誤差值;將該調整的畫面組誤差值與該第二閾值比較;以及當該調整的畫面組誤差值大于該第二閾值時,重復上述步驟直到該調整的畫面組誤差值小于該第二閾值。
10. 如權利要求9所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,該至少一編碼后的視頻幀以及該至少一編碼后的音頻幀由電視系統(tǒng)接收,并且該依據(jù)該插入的空殼視頻幀調整該畫面組誤差值的步驟包括由該畫面組誤差值中減去該電視系統(tǒng)的播映時戳周期。
11. 如權利要求6所述的用于補償音頻視頻流中時序不匹配的方法,其特征在于,該至少一編碼后的一見頻幀以及該至少一編碼后的音頻幀由電^L系統(tǒng)接收,并且該決定該畫面組的每一纟見頻幀的誤差值的步驟通過方程PTSn +Acc—Video—Adjust - PTS—Period * n決定;其中n表示該視頻幀為該畫面組的第n個視頻幀,PTSn為該第n個視頻幀完成編碼的真正時間,Acc—Video—Adjust為累計調整值,以及PTS—Period為該電視系統(tǒng)的播映時戳周期。
全文摘要
一種用于補償音頻視頻流中時序不匹配的方法,包括提供視頻編碼器;從視頻編碼器接收當前畫面組的多個編碼后的視頻幀,另接收多個編碼后的音頻幀;當視頻編碼器中出現(xiàn)異常時,產(chǎn)生多個空殼視頻幀;利用空殼視頻幀代替該當前畫面組的視頻幀。本發(fā)明提供了一種用于補償音頻視頻流中時序不匹配的方法,可以修正音頻視頻流中的時序不匹配,避免聲音與畫面不同步的現(xiàn)象。
文檔編號H04N7/62GK101500170SQ20081011071
公開日2009年8月5日 申請日期2008年5月27日 優(yōu)先權日2008年1月28日
發(fā)明者林其儁, 高仕嶸 申請人:聯(lián)發(fā)科技股份有限公司