麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

多媒體數據格式轉換方法

文檔序號:7886949閱讀:1346來源:國知局
專利名稱:多媒體數據格式轉換方法
技術領域
本發明涉及多媒體處理技術領域,特別涉及一種多媒體數據格式轉換方法。
背景技術
隨著人民生活水平的不斷提高,人們審美觀越來越高。各種各樣式的音視頻格式和相關資源層出不窮,不斷滿足現代人的娛樂需求,但目前的播放平臺很難覆蓋全部格式的音視頻文件格式,因此大量音視頻格式轉換的工具出現。同時人們對其轉換方法的速度和轉換后音視頻的質量要求也越來越高。傳統的音視頻轉換方法多采用單線程轉換引擎,采用單線程鏈路循環。單線程轉換引擎的方法具體實現是,獲取源文件,預覽并分析源文件,對源文件進行解復用,分解出相應的音頻流和視頻流以及字幕,分別對音頻流和視頻流解碼,再進行編碼,將源文件轉換為目標文件格式并輸出,整個過程是一個即串行的過程。在整個循環鏈路中,每一幀數據的流動都需要等待上一級操作處理后輸出給下一級操作端進行處理,每一級操作端的工作觸發都是基于上一級數據的輸出傳送。傳統單線程轉換引擎的方法對多核CPU的利用率較低,單核CPU的負荷較重,且冗余時間較長。無法根據用戶計算機的能力進行智能判斷,造成整體轉換時間較長。由于是單線程運轉操作,造成系統部分資源浪費,CPU利用率不高等缺點。且數據傳輸采用傳統的“推”模式,整個鏈路的數據傳輸較慢,造成轉換時間較長,轉換速率較低。

發明內容
(一 )要解決的技術問題本發明要解決的技術問題是:如何使得音視頻格式轉換過程中縮短轉換時間,提高轉換效率。( 二 )技術方案為解決上述技術問題,本發明提供了一種多媒體數據格式轉換方法,依次包括步驟:讀取原多媒體文件、分離原多媒體文件的碼流數據、解碼、按待轉換格式編碼、將編碼后的多媒體數據打包成目標轉換文件,上述轉換步驟中,下一步驟實時地獲取上一步驟的輸出數據,并發地完成格式轉換。其中,每個所述轉換步驟分別在獨立的線程中執行。其中,前后兩個轉換步驟對應的線程之間分別共享一個緩存隊列,上一步驟將處理的多媒體數據存入隊列的隊尾,下一步驟實時監測隊列中的數據,并從隊頭讀取多媒體數據。其中,若上一步驟檢測到所述緩存隊列已滿,則停止向其中存儲數據,直到所述緩存隊列有新的存儲空間,若下一步驟檢測到所述緩存隊列為空,則下一步驟對應的線程休眠,直到有新的數據將其喚醒。其中,所述解碼的線程包括:音頻解碼線程、視頻解碼線程和/或字幕解碼線程,所述編碼的線程與解碼的線程對應,包括:音頻編碼線程、視頻編碼線程和/或字幕編碼線程。其中,所述音頻解碼線程、視頻解碼線程和/或字幕解碼線程分別與所述分離原多媒體文件的碼流數據的線程共享緩存隊列,音頻解碼線程、視頻解碼線程和/或字幕解碼線程分別與相應地編碼線程共享緩存隊列,所述音頻編碼線程、視頻編碼線程和/或字幕編碼線程分別與所述將編碼后的多媒體數據打包成目標轉換文件的線程共享緩存隊列。其中,在多核處理器中,所述轉換步驟對應的不同的線程至少在兩個核中進行處理。(三)有益效果與傳統方法相比,本發明提出的多媒體數據格式轉換方法中每一個步驟作為一個獨立的線程,多個步驟之間并發執行,數據傳輸采用FIFO緩存機制共享,并采用“拉”模式進行數據調用,從而避免了傳統方法中因等待數據造成的時間冗余以及計算機CPU的浪費;本發明的方法可以充分利用計算機的CPU和運算能力,智能化的選擇工作鏈路,從本質上解決轉換速度慢、轉換時間長的問題。


圖1是本發明實施例的一種多媒體數據格式轉換方法流程圖;圖2是圖1中每個線程模塊示意圖;圖3是的兩個線程共享FIFO緩存隊列示意圖。
具體實施例方式下面結合附圖和實施例,對本發明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。為了避免傳統的串行轉換執行效率低下的問題,本發明中采用并發地格式轉換方式,即在整個轉換過程中下一步驟實時地獲取上一步驟的輸出數據,并發地完成格式轉換。為了便于理解和描述,將整個轉換過程抽象成一個圖(graph)結構,如圖1所示,轉換過程的每一個步驟抽象成不同的模塊,簡稱為filter,一個filter是對一種編解碼器或其它處理器的封裝,如負責解碼的decode filter,負責編碼的encode filter,各個模塊工作在不同的線程中,通過抽象結構pin進行通信和傳輸數據,如圖1所示,encode filter抽象為一個單獨的模塊,主要負責對數據流進行編碼,通過抽象結構的input pin和outputpin進行數據傳輸,即為編解碼器的對外接口,input pin主要連接上一級filter上的output pin,而其output pin主要連接下一級filter上的input pin。不同的編解碼器具有不同的 input pin 和 output pin。下面將介紹本發明中Graph的創建過程:如圖2所述,當用戶指定轉碼文件并配置相應的轉碼輸出條件即profile后,創建相應的source filter,將source filter上的各個output pin按照用戶的profile去搜索具有與該output_pin吻合的input pin的filter,即編解碼格式相符的filter,并將該filter的這個input pin與該output pin連接起來,生成相應的output pin。通常該filter會是demux filter,這里以它為例,繼續尋找demux filter上的output pin匹配的input pin的filter,并將這兩個pin連接起來。以此類推逐層次鏈接各級filter形成最終的轉碼graph。Graph的運行過程如下:整個轉碼鏈路中會有圖2中的各種filter,分別負責轉碼過程中各部分工作。Source filter:負責原始視頻文件的讀寫。Demux filter:負責分離輸入流中的各種碼流數據,如視頻流,字幕流,音頻流。Video/Audio/Subtitle decode filter:負責視頻 / 音頻 / 字幕的解碼。Video/Audio/Subtitle encode filter:負責視頻 / 音頻 / 字幕的編碼。Mux filter:負責將輸入的各種碼流匯編并打包輸出到目標轉換文件。當轉碼graph運行時,這些filter各自工作在不同的線程中并發執行,它們之間通過相互連接的pin進行通信及數據傳輸。由于不同的filter處理數據的能力不同,通常上級的filter的輸出數據在下一級來不及處理,反之亦然。在上下級的filter的pin之間引入了 FIFO的緩存機制,FIFO由固定數目的數據單元組成,這里稱之為報文,報文由報
文頭與數據組成,報文頭中標明數組的屬性及大小等信息,具體如下:
權利要求
1.一種多媒體數據格式轉換方法,依次包括步驟:讀取原多媒體文件、分離原多媒體文件的碼流數據、解碼、按待轉換格式編碼、將編碼后的多媒體數據打包成目標轉換文件,其特征在于,上述轉換步驟中,下一步驟實時地獲取上一步驟的輸出數據,并發地完成格式轉換。
2.如權利要求1所述的多媒體數據格式轉換方法,其特征在于,每個所述轉換步驟分別在獨立的線程中執行。
3.如權利要求2所述的多媒體數據格式轉換方法,其特征在于,前后兩個轉換步驟對應的線程之間分別共享一個緩存隊列,上一步驟將處理的多媒體數據存入隊列的隊尾,下一步驟實時監測隊列中的數據,并從隊頭讀取多媒體數據。
4.如權利要求3所述的多媒體數據格式轉換方法,其特征在于,若上一步驟檢測到所述緩存隊列已滿,則停止向其中存儲數據,直到所述緩存隊列有新的存儲空間,若下一步驟檢測到所述緩存隊列為空,則下一步驟對應的線程休眠,直到有新的數據將其喚醒。
5.如權利要求4所述的多媒體數據格式轉換方法,其特征在于,所述解碼的線程包括:音頻解碼線程、視頻解碼線程和/或字幕解碼線程,所述編碼的線程與解碼的線程對應,包括:音頻編碼線程、視頻編碼線程和/或字幕編碼線程。
6.如權利要求5所述的多媒體數據格式轉換方法,其特征在于,所述音頻解碼線程、視頻解碼線程和/或字幕解碼線程分別與所述分離原多媒體文件的碼流數據的線程共享緩存隊列,音頻解碼線程、視頻解碼線程和/或字幕解碼線程分別與相應地編碼線程共享緩存隊列,所述音頻編碼線程、視頻編碼線程和/或字幕編碼線程分別與所述將編碼后的多媒體數據打包成目標轉換文件的線程共享緩存隊列。
7.如權利要求2 6中任一項所述的多媒體數據格式轉換方法,其特征在于,在多核處理器中,所述轉換步驟對應的不同的線程至少在兩個核中進行處理。
全文摘要
本發明公開了一種多媒體數據格式轉換方法,涉及多媒體處理技術領域,該方法依次包括步驟讀取原多媒體文件、分離原多媒體文件的碼流數據、解碼、按待轉換格式編碼、將編碼后的多媒體數據打包成目標轉換文件,上述轉換步驟中,下一步驟實時地獲取上一步驟的輸出數據,并發地完成格式轉換。本發明的方法縮短了音視頻格式轉換過程中的轉換時間,提高轉換效率。
文檔編號H04N7/01GK103200380SQ20121000640
公開日2013年7月10日 申請日期2012年1月10日 優先權日2012年1月10日
發明者張彥丁 申請人:北京世紀高藍科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 伊金霍洛旗| 黑水县| 宁明县| 内丘县| 永平县| 北京市| 沧州市| 庆城县| 根河市| 泗洪县| 丰原市| 栾城县| 泰兴市| 堆龙德庆县| 会泽县| 珲春市| 南岸区| 福清市| 鹤山市| 汶川县| 永兴县| 铁岭市| 黎川县| 中山市| 峨眉山市| 弥渡县| 新余市| 衡阳县| 荥经县| 神池县| 临猗县| 宽城| 前郭尔| 高安市| 安吉县| 山东省| 息烽县| 河北区| 噶尔县| 山西省| 苏尼特左旗|