新四季網

Avi文件播放時切換多路音頻流的av同步方法及裝置的製作方法

2023-12-04 23:46:51 1

專利名稱:Avi文件播放時切換多路音頻流的av同步方法及裝置的製作方法
技術領域:
本發明主要涉及音視頻播放領域,尤其涉及一種應用於嵌入式系統中保 持含一路Divx視頻編碼數據、多路音頻數據的AVI文件在切換播放的音頻 數據時音視頻(AV)同步的方法和裝置。
背景技術:
先對文中出現的相關技術術語進行解釋I幀關鍵視頻幀,無損壓縮的視頻圖片,此文件中所有引用I幀的地 方,指的都是視頻幀;Divx: —種糹見頻編碼格式;AV: Audio and Video,音頻和視頻;CBR:固定碼流;VBR:可變碼流;SPHE匪N: Sunplus Home Entertainment 1001N;STB:全稱為Set-Top-Box即機頂盒;AVI: Audio Video Interleaved,音視頻數據交叉存取。AVI (Audio Video Interleaved (交叉存取))是最常用的一種媒體文件 格式,多用於音視頻捕捉、編輯、回放等應用程式中。通常情況下, 一個 AVI文件可以包含多個不同類型的媒體流。通常AVI文件包含的媒體流為 含有一個視頻流和一個音頻流,但含有一個視頻流和幾個音頻流的AVI文 件也是合法的。如圖1所示,AVI文件結構主要包括三部分AVI文件頭、音視頻數據、 索引信息。
其中從AVI文件頭,可獲得的信息包括AVIMAINHEADER ( AVI主 文件頭)信息、格式信息、音頻流數、視頻流時間尺度和速率指標、音視頻 數據開始位置Movie一Offset、音視頻數椐整體大小Movie—Size、 VBR音頻 流的採樣率或者CBR音頻流的字節率等信息。其中,AVI文件中音頻流通 常為兩種編碼格式VBR音頻或者CBR音頻,故根據情況解析相應參數。其中音視頻數據部分為以數據塊為單位依次交叉存放各路音視頻實際 數據。如圖2所示。其中INDEX由索引信息塊列表組成,每個索引信息塊對應AVI文件中 每個音頻或視頻數據塊,該索引信息塊依照AVI文件中音、視頻數據塊交 錯排列形式依次排列形成列表,每個索引信息塊包含數據塊標誌(是視頻 數據塊、音頻數據塊還是填充的空白數據塊,對於音頻數據塊還包括屬於哪 一路音頻流的標誌)、是否是關鍵幀標誌(即I幀的標誌)、是組合數據塊 標誌(即多個數據塊組合為一個數據組合)或是單數據塊(一個數據塊,它 可以是一個幀,或者多個幀)、偏移量dwOffset (索引每路中每音/視頻數 據塊對應在文件中距離文件頭或音視頻數據頭的偏移),以及對應音/視頻 數據塊的字節數。對於視頻數據一般情況下一個數據塊對應一幀;對於VBR的音頻數據 來說, 一個數據塊對應一個音頻幀,對於CBR的音頻數據,數據塊和音頻 幀之間沒有絕對的對應關係。在AVI文件中會有少數的如下情況:幾個音頻 數據塊組合為 一個組合數據塊。由於AVI視頻文件不含有精確的、均勻分布的時間戳信息。對於非切 換過程的AV同步,主要是在初始化解碼器前,從音視頻流頭信息中讀取每 個流的時間尺度參數和速率參數,根據這兩類參數分別初始化音視頻解碼器 的解碼速率,從而保持AV同步。而在播放含有一路Divx視頻編碼數據、 多路音頻數據的AVI文件,當切換播放的音頻數據時,就需要重新計算出 音頻、視頻播放的精確位置,以保證AV同步。本發明是基於嵌入式系統,解碼工作由硬體晶片完成,數據傳輸控制由 軟體完成,以降低嵌入式系統運行要求,加快解碼速度。但採用硬體解碼時,
數據傳榆的位置信息及數據解碼的位置信息等保持AV同步所需的信息需 要在各個單元之間傳遞,工作的控制和協調較難實現,目前還沒有這樣的一 種方法。發明內容本發明要解決的技術問題是提供一種AVI文件播放時切換多路音頻流 的AV同步方法及裝置,在播放含有一路Divx視頻編碼數據、多路音頻數 據的AVI文件時,切換音頻流後可保持AV同步。為了解決上述技術問題,本發明提供了一種AVI文件播放時切換多路 音頻流的AV同步方法,應用於包括切換控制單元、數據傳輸單元、數據處 理單元和數據解碼單元的系統,在播放含有多路音頻流的AVI文件時,先 保存AVI文件頭信息,當用戶切換音頻流後,執行以下步驟(a) 切換控制單元收到切換請求後,向數據處理單元和數據解碼單元 發送切換指令;(b) 數據解碼單元向切換控制單元回傳當前解碼的視頻幀數;(c) 切換控制單元根據當前解碼的視頻幀數和保存的索引信息、文件 頭信息計算得到重傳位置和同步播放參數,將重傳位置發送到數據傳輸單 元,將同步播放參數發送到數據解碼單元;(d) 數據傳輸單元按指定重傳位置重新傳輸AVI文件的音視頻數據, 數據處理單元接收到音視頻數據後分離出視頻流和應切換到的那路音頻流; 數據解碼單元完成視頻解碼的重新初始化,並按要切換到的那路音頻流的參數重新進行音頻解碼的初始化;(e) 數據解碼單元接收到重新傳輸的音視頻數據後,根據同步播放參 數決定是否將解碼的音視頻數據傳輸到數據顯示單元進行同步播放。進一步地,上述音一見頻同步方法還可具有以下特點步驟(c)中,切換控制單元得到的同步播放參數為計算出的音頻跳過 數目Skip—audio和視頻跳過數目Skip—Frame;
步驟(e )中,數據解碼單元對重新傳輸的音^L頻流開始部分的Skip—audio 個字節數或幀數以及Skip—Frame個視頻幀,解碼後不傳輸到數據顯示單元, 之後解碼的音視頻數據再傳輸到數據顯示單元進行同步播放,其中對固定碼 流採用字節數,對可變碼流採用幀數。進一步地,上述音視頻同步方法還可具有以下特點所述數據解碼單元在收到切換指令後,繼續對緩存的視頻數據進行解 碼,在收到參數Skip一audio和Skip一Frame後,再清空緩存的視頻數據,進 行^L頻解碼的重新初始化。進一步地,上述音^L頻同步方法還可具有以下特點所述系統為嵌入式系統,所述數據解碼單元用硬體實現,切換控制單元、 數據傳輸單元和數據處理單元則由CPU執行相應軟體來實現。進一步地,上述音視頻同步方法還可具有以下特點所述步驟(c)切 換控制單元進一步通過以下步驟完成計算(cl )根據切換音頻數據流時正在解碼的幀數A加上設定的幀數B,得 到本次切換的視頻同步點Vc的幀序號,且根據解析的音視頻數據開始位置 和其總大小,確定索引信息起始位置,讀取索引信息並保存;(c2)從音視頻數據索引開始位置累計視頻幀的數目,以累計的視頻幀 數最接近且小於Vc幀序號的I幀為Vc之前最近的I幀Vr,(c3)從索引信息中找到^對應的音頻數據塊AI5讀取A!在AVI文件 中的偏移位置,以該位置為重傳位置;(c4)計算Vc與V!之間的幀數差即視頻跳過數目Skip—Frame,以及播 放Vc時要切換到的那路音頻流應播過的音頻字節數或幀數 Audio—accum—size與^之前累加得到的音頻字節數或幀數Audio—TotalN—^ 的差值,即音頻跳過數目Skip_audio。進一步地,上述音視頻同步方法還可具有以下特點所述步驟(c3)中 V!對應的音頻數據塊A!按以下方式來查找(c31)計算播放V!之前要切換到的那路音頻流應播過的音頻字節數或
幀數Audio—TotalN—I,公式為對固定碼流Audio一TotalNJ:V!的幀序號* (視頻流時間尺度/視 頻流速率指標)* CBR音頻字節率對可變碼流Audio—TotalN—I-V!的幀序號* (視頻流時間尺度/視 頻流速率指標)*¥811音頻採樣率/1152(c32)從音視頻數據的起始位置,逐一累加要切換到的那路音頻流數 據塊的字節數或幀數,將累加值與上面得到的Audio_TotalN—I進行比較,如 杲小於Audio—TotalN一I,再進行下一次累加,如於大於等於Audio—TotalN_I,執行下一步;(c33)如累加值等於Audio_TotalN—I,則該路音頻流的下一音頻數據 塊即為V!對應的音頻數據塊AI5如累加值大於Audio—TotalN—I,則該音頻 數據塊即為V!對應的音頻數據塊A!,同時記錄A!之前累加得到的音頻字節 數或幀數Audio一TotalN—入;(c34)從音頻數據塊A!對應的索引信息塊中找到偏移位置dwOffset, 該位置即為重傳位置。所述步驟(c4)中計算播放Vc時要切換到的那路音頻流應播過的音頻 字節數或幀數Audio—accum—size時,只需將步驟(c31)公式中的V!的幀序 號改成Vc的幀序號即可。進一步地,上述音視頻同步方法還可具有以下特點所述幀數B取值範圍為6~12個幀。進一步地,上述音視頻同步方法還可具有以下特點步驟(a)中,切換控制單元收到切換請求後,還向所述數據傳輸單元 發送切換指令,所述數據傳輸單元收到切換指令後,立即停止對原音^L頻流 的傳輸;同時,如AVI文件中包含三路及以上的音頻流數據,則切換控制 單元發送到數據處理單元和數據解碼單元的指令中,需要指示要切換到的是 哪一路音頻流。本發明提供的AVI文件播放時切換多路音頻流的AV同步裝置包括
數氺居傳輸單元,用於讀取AVI文件的音^見頻數據傳輸到數據處理單元, 並在收到重傳指令後按指定重傳位置重新傳輸AVI文件的音視頻數據;數振處理羊元,用亍對AVI文件頭信息和索引信息進行解析和保存, 完成音頻流和視頻流的分離並傳輸給數據解碼單元,在收到切換指令後,從 音視頻數據中分離出視頻流和應切換到的那路音頻流;數據解碼單元,包括音頻解碼子單元和視頻解碼子單元;在收到切換指 令後,向切換控制單元回傳當前解碼的視頻幀數,並完成視頻解碼的重新初 始化以及按要切換到的那路音頻流的參數重新進行音頻解碼的初始化;根據 接收的同步播放參數,決定是否將解碼的音視頻數據傳輸到數據顯示單元進 行同步播放;切換控制單元,用於在收到切換請求後,向數據處理單元和數據解碼單 元發送切換指令,然後根據當前解碼的視頻幀數和保存的索引信息、文件頭 信息計算得到重傳位置和同步播放參數,將重傳位置發送到數據傳輸單元, 將同步播放參數發送到數據解碼單元。進一步地,上述音視頻同步裝置還可具有以下特點所述切換控制單元 得到的同步播放參數為計算出的音頻跳過數目Skip_audio和視頻跳過數目 Skip—Frame j所述數據解碼單元對重新傳輸的音視頻流開始部分的Skip_audio個字 節數或幀數以及Skip—Frame個視頻幀,解碼後不傳輸到數據顯示單元,之 後解碼的音視頻數據再傳輸到數據顯示單元進行同步播放,其中對固定碼流 採用字節數,對可變碼流採用幀數。進一步地,上述音^f見頻同步裝置還可具有以下特點所述切換控制單元 進一步包括接口子單元,用於完成切換控制單元與其它單元之間的通信;信息提取子單元,用於從數據處理單元獲取AVI文件頭信息和索引信 息,供運算子單元使用。控制子單元,用於在收到用戶接口單元的切換請求後,向數據解碼單元、 數據處理單元和數據解碼單元發送切換指令,發送到數據處理單元和解碼單 元的指令應攜帶要切換到的音頻流標識,從數據解碼單元獲取當前解碼的視頻幀序號傳送到運算子單元;並在收到運算子羊元的重傳位置、音頻跳過數 目和視頻跳過數目參數後,向數據傳輸單元發送重傳指令,攜帶重傳位置參 數,以及將音頻跳過數目和視頻跳過數目參數傳輸到數據解碼單元。運算子單元,用於根據當前解碼的視頻幀序號和AVI文件頭信息和索 引信息,計算出重傳位置、音頻跳過數目Skip_audio和視頻跳過數目 Skip—Frame,傳送到控制子單元。進一步地,上述音^L頻同步裝置還可具有以下特點所述數據解碼單元在收到切換指令後,繼續對緩存的視頻數據進行解 碼,在收到參數Skip一audio和Skip一Frame後,再清空緩存的視頻數據,進 行-現頻解碼的重新初始化。進一步地,上述音視頻同步裝置還可具有以下特點所述運算子單元進 一步包括以下部分同步點計算及索引信息提取部分,根據切換音頻數據流時正在解碼的幀 數A加上設定的幀數B,得到本次切換的視頻同步點Vc的幀序號,且根據 解析的音視頻數據開始位置和其總大小,確定索引信息起始位置,讀取索引 信息並保存;I幀確定部分,從音視頻數據索引開始位置累計視頻幀的數目,以累計 的視頻幀數最接近且小於Vc幀序號的I幀為Vc之前最近的I幀重傳位置計算部分,從索引信息中找到^對應的音頻數據塊A!,讀取 Aj在AVI文件中的偏移位置,以該位置為重傳位置;跳過數目計算部分,計算Vc與^之間的幀數差即視頻跳過數目 Skip—Frame,以及播放Vc時要切換到的那路音頻流應播過的音頻字節數或 幀數Audio—accum—size與A〖之前累加得到的音頻字節數或幀數 Audio—TotalN—Ar的差值,即音頻跳過數目Skip—audio。進一步地,上述音視頻同步裝置還可具有以下特點
所述重傳位置計算部分查找Vi對應的音頻數據塊A!時,先計算播》文V!之前要切換到的那路音頻流應播過的音頻字節數或幀數Audio_TotalN_I,公 式為對固定碼流AudioJTotalN一I-^的幀序號* (視頻流時間尺度/視 頻流速率指標)* CBR音頻字節率對可變碼流Audio一TotalN一I-^的幀序號* (視頻流時間尺度/視 頻流速率指標)* VBR音頻採樣率/1152再從音視頻數據的起始位置,逐一累加要切換到的那路音頻流數據塊的 字節數或幀數,將累加值與上面得到的Audio—TotalNJ進行比較,如果小於 Audio—TotalN—I,再進行下一次累加,如累加值等於Audio—TotalN—I,則該 路音頻流的下一音頻數據塊即為Vt對應的音頻數據塊AP如累加值大於 Audio—TotalN一I,則該音頻數據塊即為V!對應的音頻數據塊AP同時記錄 A,之前累加得到的音頻字節數或幀數Audio一TotalN—Aj;最後,從音頻數據塊A!對應的索引信息塊中找到偏移位置dwOffset, 該位置即為重傳位置。所述跳過數目計算部分計算播放Vc時要切換到的那路音頻流應播過的 音頻字節數或幀數Audio—accum—size時,只需將上述計算Audio一TotalNJ 公式中的V!的幀序號改成Vc的幀序號即可。進一步地,上述音視頻同步裝置還可具有以下特點所述切換控制單元還用於在收到切換請求後,向所述數據傳輸單元發送切換指令;所述數據傳輸單元收到切換指令後,立即停止對原音視頻流的傳輸;所述切換控制單元在播放的AVI文件中包含三路及以上的音頻流數據時,發送到數據處理單元和數據解碼單元的指令中,需要指示要切換到的是 哪一路音頻流。進一步地,上述音^L頻同步裝置還可具有以下特點所述裝置應用於嵌入式系統,所述數據解碼單元用硬體實現,切換控制 單元、數據傳輸單元和數據處理單元由CPU執行相應軟體來實現。
本發明保證了播放含一路Divx視頻編碼數據、多路音頻數據的AVI文 件,在切換不同音頻流數據時保持AV同步。進一步還可以儘可能維持視頻 播放的連續性。特別可用於嵌入式系統的低配置條件下,實現AVI文件音 頻數據切換時的AV同步,從而降低了對系統主頻的要求,可實現Karaoke (卡拉OK)的原/伴唱切換等功能。


圖1是AVI文件結構的示意圖。圖2是圖1中的音視頻數據部分的結構示意圖。圖3是本發明實施例系統的結構框圖。圖4是本發明實施例方法在切換原伴唱時的處理流程圖。圖5和圖6分別是CBR音頻流和VBR音頻流的參數計算的示意圖。
具體實施方式
本發明是播放含有一路Divx視頻編碼數據、多路音頻數據的AVI文件 過程中,切換音頻數據時保持AV同步的方法和系統,以下以播放Karaoke 系統時切換原伴唱為例,結合附圖和實施例對本發明進行詳細說明。由於從得到切換指令到行使多路音頻切換期間需要一段時間進行計算, 為避免視頻圖像靜止定格,視頻會繼續播放一段時間。在視頻播放的情況下, 為了保證切換後的音頻與視頻的同步,就要選擇一個音視頻同時播放的一個 點,即視頻同步點(即視頻幀)C及其對應的音頻數據塊。該視頻同步點應 在切換時解碼的視頻幀後的某個位置。另外根據解碼的要求,視頻的解碼必須從I幀開始,音頻可以從任何位 置開始,如果直接從C點視頻解碼,則會出現馬賽克現象。所以確定切換 後重新解碼的開始位置時,需找到視頻同步點C (也用Vc表示)之前最近 的I幀(也用V!表示)所對應(指應同步播放)的音頻數據塊(以下用Aj 表示),從該音頻數據塊在AVI文件中的偏移位置Gotoj)ffset重新傳輸和 解碼AVI文件數據。對於Vc之前的視頻幀以及Vc對應的音頻數據塊(以 下用Ac表示)之前的音視頻數據,只進行解碼而不進行播放。 本文中的重新傳輸或重傳,是指打破第一次傳輸次序,開始新的第二次 傳輸,這次傳輸的起始位置不再是原來的文件頭。閨3是本發明實施例系統的結構框圖,如圖所示,包括數據傳輸單元、 數據處理單元、切換控制單元、數據解碼單元、數據顯示單元和用戶接口單 元,其中數據傳輸單元用於將讀取的AVI文件音視頻數據傳輸到數據處理單元, 且數據傳輸單元在收到切換控制單元的切換指令後停止數據傳輸,在收到該 單元的重傳指令後,按指令中指示的重轉位置重新開始傳輸音視頻數據。其 中視頻數據採用Divx3.ll、 Divx4,x、 Divx5. x等編碼格式,音頻數據採用 MP1、 MP2、 MP3等編碼格式。數據處理單元用於接收數據傳輸單元傳輸的音視頻數據,對AVI文件 頭信息、Index信息、音視頻格式信息進行解析後保存,分離出要播放的音 視頻數據並傳輸給數據解碼單元,在收到切換指令後對重新傳輸的數據,需 要從音視頻數據中分離出視頻流和應切換到的那路音頻流;切換控制單元進一步包括信息提取子單元,用於從數據處理單元獲取保存的AVI文件頭信息和 Index信息,供運算子單元使用;接口子單元,用於完成切換控制單元與其它單元之間的通信;控制子單元,用於在收到用戶接口單元的切換請求後,向數據傳輸單元、數據處理單元和數據解碼單元發送切換指令,發送到數據處理單元和解碼單元的指令指示要切換到的是哪一路音頻流(指示可以通過攜帶要切換到的音頻流標識來實現,當然如果只有兩路音頻流也可以不指示),並從數據解碼單元獲取當前解碼的視頻幀數傳送到運算子單元;以及在收到運算子單元的重傳位置、音頻跳過數目和視頻跳過數目參數後,向數據傳輸單元發送重傳指令,包含重傳位置參數,並將音頻跳過數目和視頻跳過數目參數傳輸到數 據解碼單元;運算子單元,用於根據當前解碼的視頻幀數和AVI文件頭信息、Index 信息,計算出重傳位置、音頻跳過數目和視頻跳過數目,傳送到控制子單元。
該子單元可進行分為同步點計算及索引信息提取部分、I幀確定部分、重傳 位置計算部分和跳過數目計算部分,各個部分的功能將在下文再介紹。數據解碼單元,包括音頻解碼子單元和視頻解碼子單元,分別用於對數據處理單元傳輸的音視頻數據分別進行解碼,其中視頻解碼子單元還用於在收到切換控制單元的切換指令後,向其回傳當 前視頻解碼的視頻幀數,並繼續解碼緩存數據;在收到視頻跳過數目後,清 空緩存並重新初始化,對重新傳輸的視頻流開始部分該數目的視頻幀只解 碼,不傳輸到數據顯示單元,之後的視頻幀解碼後輸出到數據顯示單元;音頻解碼子單元在收到切換控制單元的切換指令後停止對音頻數據的 解碼,按要切換到的音頻流參數進行重新初始化設置;在收到音頻跳過數目 後,對重新傳輸的音頻流開始部分該數目的音頻幀/字節數('7"表示"或" 關係,對CBR的音頻數據為字節數,對VBR的音頻數據為音頻幀)只解碼, 不傳輸到數據顯示單元,之後的音頻數據解碼後輸出到數據顯示單元。數據顯示單元,用於把解碼後的音視頻數據進行顯示、播放,視頻可以 在TV/VGA設備輸出,音頻在TV設備輸出。用戶接口單元是用戶操作的接口,用戶可通過該接口發送切換請求,其 中該切換請求在有三路以上音頻流時,要包含要切換到的音頻流標識,即指 示要切換到的是哪一路音頻流。沒有切換原伴唱時執行的流程包括以下步驟步驟一,STB加電,自動運行Karaoke播放系統,用戶通過播放界面控 制此系統;步驟二,用戶選擇播放AVI文件格式的歌曲時,從AVI文件中的文件 頭開始傳輸數據,如接收到的傳輸數據為AVI文件頭,執行步驟三,若為 音視頻數據,執行步驟五;步驟三,解析AVI文件頭,保存其中包含的信息;其中解析且保存的AVI文件頭信息包括音一見頻流數,用以確認此文 件中有幾路音視頻流;視頻流時間尺度和視頻流速率指標;VBR數據對齊 值(固定值為1152, ) 、 VBR音頻流的採樣率或者CBR音頻流的字節率; 音視頻數據開始位置Movie—Offset及音視頻數據整體大小Movie—Size;視頻 圖象的寬、高,即圖象解析度;視頻解碼器類型;視頻解碼器調色板;視頻 解碼器解碼速率(通過^i頻流時間尺度和^L頻流速率指標這兩個參數表示); 每路音頻流音頻解碼器類型;每路音頻流音頻解碼器碼流類型(固定碼率或 非固定碼率);每路音頻流音頻解碼器解碼速率;音、視頻解碼器開始解碼 時間。步驟四,根據從AVI文件頭獲取的信息進行解碼的初始化設置操作;主要包括以下操作設置視頻圖象的寬、高,即圖象解析度;設置視頻 解碼器類型;設置視頻解碼器調色板;設置視頻解碼器解碼速率;設置音頻 解碼器類型;設置音頻解碼器碼流類型(固定碼率或非固定碼率);設置音 頻解碼器解碼速率;設置音、^f見頻解碼器開始解碼時間。其中AVI文件只含有一路視頻數據,但可以含多路音頻數據,所以初 始化音頻解碼器時使用默認播放的音頻流參數進行初始化操作。步驟五,分離需要播放的音視頻數據流;步驟六,對分離的音視頻數據進行解碼,通過AV接口把解碼後的數據 輸出到顯示設備與揚聲器進行播放。該流程只是常規的處理流程。如圖4所示,在播放含有多路音頻流的AVI文件的過程中,用戶切換 原伴唱的處理流程包括以下步驟步驟IIO,用戶切換原伴唱;步驟120,切換控制單元收到切換請求後,向數據傳輸單元、數據處理 單元和數據解碼單元發送切換指令,其中發送到數據處理單元和數據解碼單 元的指令需要攜帶要切換到的音頻流標識;步驟130,數據傳輸單元停止對音視頻流的傳輸,數據解碼單元按要切 換到的那路音頻流的參數重新進行音頻解碼的初始化設置,向切換控制單元 回傳當前解碼的視頻幀數,同時繼續對緩存的視頻數據進行解碼;
該步中的音頻解碼初始化r沒置包4舌i殳置音頻解碼器類型;i殳置音頻解碼器碼流類型(固定幀率或非固定幀率);設置音頻解碼器解碼速率;設置 音、視頻解碼器開始解碼時間。進行這些設置所需的參數是原來從AVI文件頭獲取的。步驟140,切換控制單元根據當前解碼的視頻幀數和保存的INDEX信 息、文件頭信息,計算出重傳位置、音頻跳過數目Skip—audio和視頻跳過數 目Skip—Frame等參數,向數據傳輸單元發送重傳指令並包括重傳位置參數, 並將參數Skip—audio和Skip_Frame傳送到數據解碼單元;步驟150,數據傳輸單元按指定重傳位置重新傳輸AVI文件的音視頻數 據,由數據處理單元從音視頻數據中分離出視頻流和應切換到的那路音頻 流;數據解碼單元先清空緩存的視頻數據,重新初始化;步驟160,數據解碼單元對重新傳輸的音視頻流開始部分的Skip—audio 個音頻字節勤幀數和Skip一Frame個視頻幀,解碼後不傳輸到數據顯示單元, 之後解碼的音視頻數據再傳輸到數據顯示單元以同步播放。至此A/V同步過程完成。要說明的是,數據解碼單元(中的音頻解碼 子單元)也可以在收到切換指令後繼續解碼音頻數據,在收到音頻跳過數目 後再停止解碼、完成要切換到的音頻流的初始化。下面將詳細地說明在步驟140中如何進行計算,請同時參照圖5和圖6 示出的CBR (固定碼流)音頻流和VBR (可變碼流)音頻流的參數計算的 示意圖。圖中"a"或'V,對應一個數據塊。該步驟進一步分為以下步驟步驟1401,根據切換音頻數據流時正在解碼的視頻幀數A加上設定的 幀數B,得到本次切換的視頻同步點Vc的幀序號,同時根據解析的音視頻 數據開始位置和其總大小確定INDEX信息起始位置,讀取INDEX信息並保存;vc的幀序號即為從音視頻數據開始位置到該幀累計得到的視頻幀數 目。幀數B為經驗值或計算出來,B如果大了,播放會有跳躍現象,如杲小 了,就會有重複現象,較佳取值範圍為6~12個幀。該運算由運算子單元 的同步點計算及索引信息提取部分完成。步驟1402,先確定Vc之前最近的I幀K的幀序號;本實施例是從音視頻數據索引開始位置,分別累計視頻幀的數目、所要 切換到的音頻數據流的每一音頻數據塊前所有本路音頻數據塊、字節數/幀 數,以及每一路音頻流的每一音頻數據塊在AVI文件中的偏移位置;這樣 可以一次得到每一個I幀的幀序號(即累計到該I幀的視頻幀數),該I幀 之前的各路音頻流數據塊數、字節lt/幀數,該I幀對應的音頻數據塊在AVI 文件中的偏移位置等的信息。那麼幀序號最接近且小於Vc幀序號的I幀即 為V!。由於在INDEX信息中並沒有音頻數據塊或視頻數據塊的序號,因此可 以從頭開始累計視頻幀的數目,等於Vc的幀序號時即找到了 Vc,進而可確 定其之前最近的I幀。或者,也可以在累計過程中建立起每一個I幀幀序號 的集合,直接和Vc的幀序號比較,其中幀序號最接近且小於等於Vc的幀序 號的I幀即為要找的I幀。另外,由於每個I幀之間間隔的幀數是固定的, 只要知道第一個I幀的序號(如讀取INDEX信息或為固定值),就可以直 接計算出每一I幀的幀序號,按同樣方法可比較得到V!的幀序號。該運算由運算子單元的I幀確定部分完成。步驟1403,從INDEX信息中找到V!對應的音頻數據塊A,讀取A在 AVI文件中的偏移位置,以該位置為重傳位置Goto—offset;在INDEX中,V!對應的音頻數據塊A按以下方式來查找1)計算播放K之前要切換到的那路音頻流應播過的音頻字節數或幀數 AudioJTotalN一I,對CBR (固定碼流)音頻流計算的是音頻數據字節數,對 於VBR(可變碼流)音頻流計算的是音頻數據幀數,公式為對CBR: Audio一TotalNJ-V!的幀序號* (視頻流時間尺度/視頻流 速率指標)申CBR音頻字節率對VBR: AudioJTotalN一I = ^的幀序號* (視頻流時間尺度/視頻流 速率指標)"^VBR音頻採樣率/1152應同步播放的音頻數據塊和視頻數據塊並不總是相鄰,因此上面根據 AVI文件頭中的相關參數來計算。2) 從音視頻數據的起始位置,逐一累加要切換到的那路音頻流數據塊的字節lt/幀數,將累加值與上面得到的Audio一TotalN一I進行比較,如杲小 於Audio—TotalN一I,再進行下一次累加,如於大於等於Audio—TotalN—I,執 行下一步;3) 如累加值等於Audio—TotalN_I,則該路音頻流的下一音頻數據塊即 為V!對應的音頻數據塊AI5如累加值大於Audio_TotalN_I,則該音頻數據 塊即為V!對應的音頻數據塊A!,同時記錄A!之前累加得到的音頻字節數/ 幀數Audio—TotalN一Aj;4) 從音頻數據塊A對應的索引信息塊中找到偏移位置dwOffset,該位 置即為重傳位置Goto—offset。在另一實施例中,也可以在讀入INDEX信息後,先遍歷INDEX信息, 記錄要切換到的那路音頻流的每一音頻數據塊對應的字節數或幀數及其偏 移位置,這樣在計算出Audio—TotalN—I後,就可以直接比較得到重傳位置 Goto_offset。該運算由運算子單元的重傳位置計算部分完成。步驟1404,計算出Vc與V!之間的幀數差即視頻跳過數目Skip—Frame, 以及播放Vc時要切換到的那路音頻流應播過的音頻字節數/幀數 Audio_accum—size與^之前累加得到的音頻字節勤幀數Audio—TotallSL^ 的差值,即音頻跳過數目Skip—audio;Skip_Frame就等於Vc與V〖的幀序號的差值。而Audio—accum一size的計 算方法與Audio_TotalN—I相同,公式如下對CBR: Audio—accum—size-Vc的幀序號* (視頻流時間尺度/視頻 流速率指標)* CBR音頻字節率對VBR: Audio_accum—size = Vc的幀序號* (視頻流時間尺度/視 頻流速率指標)* VBR音頻採樣率/1152由於CBR音頻流計算的是音頻數據字節數,VBR音頻流計算的是音頻
數據幀數,故Audio—accum—size在CBR的組合數據塊或者一個數據塊(CBR 的音頻數據塊與音頻幀是不對應關係)中可以是截至在一個幀中間,在VBR 的組合數據塊中是截至在幀幀之間。該運算由運算子單元的跳過數目計算部分完成。綜上所述,本發明可採用軟、硬體結合的方式,播放含一路Divx視頻 編碼數據、多路音頻數據的AVI文件,在切換不同音頻流數據時保持AV 同步。保證了在嵌入式系統中低配置條件下,對AVI文件音頻數據切換時 AV同步,從而降低了對系統主頻的要求。本發明的另一實施例中,如果只需要實現同步,不考慮播放的連續性問 題,也可以省略與音頻跳過數目和視頻跳過數目相關的流程中的操作和裝置 中的單元。
權利要求
1. 一種AVI文件播放時切換多路音頻流的AV同步方法,應用於包括切換控制單元、數據傳輸單元、數據處理單元和數據解碼單元的系統,在播放含有多路音頻流的AVI文件時,先保存AVI文件頭信息,當用戶切換音頻流後,執行以下步驟(a)切換控制單元收到切換請求後,向數據處理單元和數據解碼單元發送切換指令;(b)數據解碼單元向切換控制單元回傳當前解碼的視頻幀數;(c)切換控制單元根據當前解碼的視頻幀數和保存的索引信息、文件頭信息計算得到重傳位置和同步播放參數,將重傳位置發送到數據傳輸單元,將同步播放參數發送到數據解碼單元;(d)數據傳輸單元按指定重傳位置重新傳輸AVI文件的音視頻數據,數據處理單元接收到音視頻數據後分離出視頻流和應切換到的那路音頻流;數據解碼單元完成視頻解碼的重新初始化,並按要切換到的那路音頻流的參數重新進行音頻解碼的初始化;(e)數據解碼單元接收到重新傳輸的音視頻數據後,根據同步播放參數決定是否將解碼的音視頻數據傳輸到數據顯示單元進行同步播放。
2、 如權利要求1所述的AV同步方法,其特徵在於步驟(c)中,切換控制單元得到的同步播放參數為計算出的音頻跳過 數目Skip_audio和視頻跳過數目Skip—Frame;步驟(e )中,數據解碼單元對重新傳輸的音視頻流開始部分的Skip—audio 個字節數或幀數以及Skip—Frame個視頻幀,解碼後不傳輸到數據顯示單元, 之後解碼的音視頻數據再傳輸到數據顯示單元進行同步播放,其中對固定碼 流採用字節數,對可變碼流採用幀數。
3、 如權利要求2所述的AV同步方法,其特徵在於所述數據解碼單元在收到切換指令後,繼續對緩存的視頻數據進行解 碼,在收到參數Skip—audio和Skip一Frame後,再清空緩存的視頻數據,進 4亍i見頻解碼的重新初始^f匕。
4、 如權利要求1所述的AV同步方法,其特徵在於所述系統為嵌入式系統,所述數據解碼單元用硬體實現,切換控制單元、 數據傳輸單元和數據處理單元則由CPU執行相應軟體來實現。
5、 如權利要求2所述的AV同步方法,其特徵在於所述步驟(c)切 換控制單元進一步通過以下步驟完成計算(cl)根據切換音頻數據流時正在解碼的幀數A加上設定的幀數B,得 到本次切換的視頻同步點Vc的幀序號,且根據解析的音視頻數據開始位置 和其總大小,確定索引信息起始位置,讀取索引信息並保存;(c2)從音視頻數據索引開始位置累計視頻幀的數目,以累計的視頻幀 數最接近且小於Vc幀序號的I幀為Vc之前最近的I幀VI;(c3 )從索引信息中找到V!對應的音頻數據塊Ap讀取At在AVI文件 中的偏移位置,以該位置為重傳位置;(c4)計算Vc與Vz之間的幀數差即視頻跳過數目Skip—Frame,以及播 放Vc時要切換到的那路音頻流應播過的音頻字節數或幀數 Audio_accum—size與A!之前累加得到的音頻字節數或幀數Audio—TotalN—^ 的差值,即音頻跳過數目Skip—audio。
6、 如權利要求5所述的AV同步方法,其特徵在於所述步驟(c3) 中^對應的音頻數據塊A!按以下方式來查找(c31)計算播放V:之前要切換到的那路音頻流應播過的音頻字節數或 幀數Audio一TotalN一I,公式為對固定碼流AudioJTotalNJ-V!的幀序號* (視頻流時間尺度/視 頻流速率指標)* CBR音頻字節率對可變碼流Audic^TotalN一I-K的幀序號* (視頻流時間尺度/視 頻流速率指標),VBR音頻採樣率/1152(c32)從音視頻數據的起始位置,逐一累加要切換到的那路音頻流數 據塊的字節數或幀數,將累加值與上面得到的AudioJTotalNJ進行比較,如 果小於Audio—TotalN—I,再進行下一次累加,如於大於等於Audio—TotalN_I, 執行下一步;(c33)如累加值等於AudioJTotalNJ,則該路音頻流的下一音頻數據 塊即為V!對應的音頻數據塊Ai,如累加值大於Audio一TotalN一I,則該音頻 數據塊即為^對應的音頻數據塊Ap同時記錄A,之前累加得到的音頻字節 數或幀數AudioJotalN一A^(c34)從音頻數據塊^對應的索引信息塊中找到偏移位置dwOffset, 該位置即為重傳位置。所述步驟(c4)中計算播放Vc時要切換到的那路音頻流應播過的音頻 字節數或幀數Audio—accum一size時,只需將步驟(c31)公式中的V!的幀序 號改成Vc的幀序號即可。
7、 如權利要求4所述的AV同步方法,其特徵在於 所述幀數B取值範圍為6~12個幀。
8、 如權利要求1所述的AV同步方法,其特徵在於步驟(a)中,切換控制單元收到切換請求後,還向所述數據傳輸單元 發送切換指令,所述數據傳輸單元收到切換指令後,立即停止對原音視頻流 的傳輸;同時,如AVI文件中包含三路及以上的音頻流數據,則切換控制 單元發送到數據處理單元和數據解碼單元的指令中,需要指示要切換到的是 哪一路音頻流。
9、 一種AVI文件播放時切換多路音頻流的AV同步裝置,其特徵在於, 包括數據傳輸單元,用於讀取AVI文件的音視頻數據傳輸到數據處理單元, 並在收到重傳指令後按指定重傳位置重新傳輸AVI文件的音視頻數據;數據處理單元,用於對AVI文件頭信息和索引信息進行解析後保存, 完成音頻流和視頻流的分離並傳輸給數據解碼單元,在收到切換指令後,從 音視頻數據中分離出視頻流和應切換到的那路音頻流;數據解碼單元,包括音頻解碼子單元和視頻解碼子單元;在收到切換指 令後,向切換控制單元回傳當前解碼的視頻幀數,並完成視頻解碼的重新初始化以及按要切換到的那路音頻流的參數重新進行音頻解碼的初始化;衝艮據 接收的同步播放參數,決定是否將解碼的音視頻數據傳輸到數據顯示單元進 行同步播放;切換控制單元,用於在收到切換請求後,向數據處理單元和數據解碼單 元發送切換指令,然後根據當前解碼的視頻幀數和保存的索引信息、文件頭 信息計算得到重傳位置和同步播放參數,將重傳位置發送到數據傳輸單元, 將同步播放參數發送到數據解碼單元。
10、 如權利要求9所述的AV同步裝置,其特徵在於所述切換控制單元得到的同步播放參數為計算出的音頻跳過數目 Skip—audio和視頻跳過數目Skip—Frame;所迷數據解碼單元對重新傳輸的音視頻流開始部分的Skip_audio個字 節數或幀數以及Skip—Frame個視頻幀,解碼後不傳輸到數據顯示單元,之 後解碼的音視頻數據再傳輸到數據顯示單元進行同步播放,其中對固定碼流 採用字節數,對可變碼流採用幀數。
11、 如權利要求IO所述的AV同步裝置,其特徵在於所述切換控制 單元進一步包括接口子單元,用於完成切換控制單元與其它單元之間的通信;信息提取子單元,用於從數據處理單元獲取AVI文件頭信息和索引信 息,供運算子單元使用。控制子單元,用於在收到用戶接口單元的切換請求後,向數據解碼單元、 數據處理單元和數據解碼單元發送切換指令,發送到數據處理單元和解碼單 元的指令應攜帶要切換到的音頻流標識,從數據解碼單元獲取當前解碼的視 頻幀序號傳送到運算子單元;並在收到運算子單元的重傳位置、音頻跳過數 目和視頻跳過數目參數後,向數據傳輸單元發送重傳指令,攜帶重傳位置參 數,以及將音頻跳過數目和視頻跳過數目參數傳輸到數據解碼單元。運算子單元,用於根據當前解碼的視頻幀序號和AVI文件頭信息和索 引信息,計算出重傳位置、音頻跳過數目Skip—audio和視頻跳過數目 Skip—Frame,傳送到控制子單元。
12、 如權利要求9所述的AV同步裝置,其特徵在於 所述數據解碼單元在收到切換指令後,繼續對緩存的視頻數據進行解碼,在收到參數Skip一audio和Skip—Frame後,再清空緩存的視頻數據,進 行-f見頻解碼的重新初始化。
13、 如權利要求11所述的AV同步裝置,其特徵在於所述運算子單 元進一步包括以下部分同步點計算及索引信息提取部分,根據切換音頻數據流時正在解碼的幀 數A加上設定的幀數B,得到本次切換的視頻同步點Vc的幀序號,且根據 解析的音視頻數據開始位置和其總大小,確定索引信息起始位置,讀取索引 信息並保存;I幀確定部分,從音視頻數據索引開始位置累計視頻幀的數目,以累計 的視頻幀數最接近且小於Vc幀序號的I幀為Vc之前最近的I幀Vj;重傳位置計算部分,從索引信息中找到^對應的音頻數據塊A!,讀取 Aj在AVI文件中的偏移位置,以該位置為重傳位置;跳過數目計算部分,計算Vc與V!之間的幀數差即視頻跳過數目 Skip—Frame,以及播放Vc時要切換到的那路音頻流應播過的音頻字節數或 幀數Audio—accum—size與^之前累加得到的音頻字節數或幀數 Audio—TotalN—^的差值,即音頻跳過數目Skip一audio。
14、 如權利要求13所述的AV同步裝置,其特徵在於所述重傳位置計算部分查找^對應的音頻數據塊A!時,先計算播放Vj 之前要切換到的那路音頻流應播過的音頻字節數或幀數Audio—TotalN—I,公 式為對固定碼流Audio—TotalNj-Vi的幀序號* (視頻流時間尺度/視 頻流速率指標)* CBR音頻字節率對可變碼流AudioJTotalN—1 = ^的幀序號* (視頻流時間尺度/視 頻流速率指標)* VBR音頻採樣率/1152再從音視頻數據的起始位置,逐一累加要切換到的那路音頻流數據塊的 字節數或幀數,將累加值與上面得到的Audio—TotalN—I進行比較,如果小於 Audio_TotalN—I,再進4亍下一次累力口,力口累力口值等於Audio—TotalN—I,則該 路音頻流的下一音頻數據塊即為V!對應的音頻數據塊如累加值大於 Audio一TotalN一I,則該音頻數據塊即為^對應的音頻數據塊同時記錄 A之前累加得到的音頻字節數或幀數Audio_TotalN_Ar,最後,從音頻數據塊Ai對應的索引信息塊中找到偏移位置dwOffset, 該位置即為重傳位置。所述跳過數目計算部分計算播放Vc時要切換到的那路音頻流應播過的 音頻字節數或幀數Audio—accum_size時,只需將上述計算Audio—TotalN—I 公式中的V!的幀序號改成Vc的幀序號即可。
15、 如權利要求9所述的AV同步裝置,其特徵在於所述切換控制單元還用於在收到切換請求後,向所述數據傳輸單元發送 切換指令;所述數據傳輸單元收到切換指令後,立即停止對原音視頻流的傳 輸;所述切換控制單元在播放的AVI文件中包含三路及以上的音頻流數據 時,發送到數據處理單元和數據解碼單元的指令中,需要指示要切換到的是 哪一路音頻流。
16、 如權利要求9所述的AV同步裝置,其特徵在於所述裝置應用於嵌入式系統,所述數據解碼單元用硬體實現,切換控制 單元、數據傳輸單元和數據處理單元由CPU執行相應軟體來實現。
全文摘要
一種AVI文件播放時切換多路音頻流的AV同步方法,應用於包括切換控制單元、數據傳輸單元、數據處理單元和數據解碼單元的系統,在播放AVI文件如用戶切換音頻流,切換控制單元向數據處理單元和數據解碼單元發送切換指令;數據解碼單元回傳當前解碼的視頻幀數;切換控制單元根據該視頻幀數和索引信息、文件頭信息計算得到重傳位置和同步播放參數,分別發送到數據傳輸單元和數據解碼單元;數據解碼單元完成音視頻解碼的重新初始化後,對重新傳輸的音視頻數據解碼,根據同步播放參數決定是否將解碼的音視頻數據傳輸到數據顯示單元進行同步播放。本發明方法在播放含有一路Divx視頻編碼數據、多路音頻數據的AVI文件時,切換音頻流後可保持AV同步。
文檔編號H04N7/26GK101212679SQ200610172268
公開日2008年7月2日 申請日期2006年12月30日 優先權日2006年12月30日
發明者勇 劉, 石學會 申請人:凌陽科技股份有限公司;北京北陽電子技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀