專利名稱:3dv 視頻封裝、播放方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多媒體封裝播放方法及其系統(tǒng),特別是一種3D視頻的封裝播放方法及其系統(tǒng)。
背景技術(shù):
在3D立體視頻日益普及的今天,現(xiàn)有技術(shù)的3D立體視頻播放方法都是基于傳統(tǒng)2D視頻媒體的封裝處理方式,除了在內(nèi)容采集制作環(huán)節(jié)必須用水平雙角度或多角度拍攝及設(shè)計外,在記錄、編碼、壓縮、解碼、播放的技術(shù)環(huán)節(jié)都是基于傳統(tǒng)2D圖像處理方法,為了能利用傳統(tǒng)方法處理,制作者大多都將多角度視圖畫面先進行同步處理,再進行拼接處理,最后利用傳統(tǒng)2D封裝處理方法處理。在播放顯示視頻時,根據(jù)拼接方式再由人工進行播放設(shè)定,設(shè)定正確后才能顯示正確的立體畫面。目前由于行業(yè)并沒有對拼接進行標準約定,拼接方式五花八門,例如有雙視圖左右平行拼接、雙視圖右左交差拼接、上下拼接、下上拼接、行交織拼接、列交織拼接和點交織拼接,其中每種拼接方式還可能是全視圖拼接,半高或半寬分辨率拼接,拼接得到的數(shù)據(jù)信息就是我們所稱的3D立體信息。由于這些3D立體信息沒有統(tǒng)一的標準,造成播放顯示時無法識別圖像是否為3D視頻以及3D視頻視圖的類別。在播放時,用戶需要識別3D立體信息的特征,手動操作選擇視頻的播放顯示方式。雖然立體圖像視圖數(shù)、排列方式可以簡單目測判斷,但更多如視圖拼接方式、單目圖像分辨率、圖像和左右眼睛對應(yīng)的數(shù)據(jù)信息,都需要用戶播放時反復(fù)嘗試設(shè)置,只有設(shè)置完全吻合,才能看到顯示正確的立體效果圖像。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種3DV視頻封裝、播放方法及其系統(tǒng),要解決的技術(shù)問題是在播放顯示立體視頻時,正確顯示立體效果圖像,提高播放的效率。本發(fā)明采用以下技術(shù)方案一種3DV視頻封裝、播放方法,包括以下步驟一、3D視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件;二、3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,并將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù);視頻3D數(shù)據(jù)文件的信息為數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別;三、3D視頻播放系統(tǒng)的3D文件重新封裝模塊將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述數(shù)據(jù)轉(zhuǎn)換、重新封裝,按以下步驟3D文件重新封裝模塊從視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得時間戳;從音頻流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的音頻數(shù)據(jù);從存儲模塊的字幕流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的字幕數(shù)據(jù);按Mp4標準重新封裝;
四、將數(shù)據(jù)包作為重新封裝的視頻3D數(shù)據(jù)文件的頭文件,按3DV格式加入到重新封裝后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)文件的頭文件中;將Mp4標準重新封裝的數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)、3DV格式的數(shù)據(jù)包,保存到3D視頻播放系統(tǒng)存儲模塊的另一目錄中,得到封裝后的視頻3D數(shù)據(jù)文件;五、播放重新封裝后的視頻3D數(shù)據(jù)文件,按以下步驟3D視頻解封裝模塊按3DV格式,從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,得到視頻3D數(shù)據(jù)文件的信息;3D視頻解封裝模塊按Mp4標準對封裝后的視頻3D數(shù)據(jù)文件進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下;播放模塊對顯示輸出設(shè)備進行3D輸出設(shè)置,具體為3D顯示、視圖類別、半寬識別、半高識別;播放模塊從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得圖像時間戳;從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳;從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳,對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼,按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出 音頻數(shù)據(jù)信號到音頻輸出設(shè)備,逐一讀取,解碼、輸出到顯示輸出設(shè)備、音頻輸出設(shè)備,直到最后一幀數(shù)據(jù)處理完畢’結(jié)束播放流程。本發(fā)明的3DV視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件,從外部存儲設(shè)備或計算機的硬盤中讀取。 本發(fā)明的3DV視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在3D視頻播放系統(tǒng)的存儲模塊內(nèi)一目錄中。本發(fā)明的3DV視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,存儲于2D文件解封模塊中的3D文件的信息存儲子模塊中。本發(fā)明的數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件。一種3DV視頻封裝方法,包括以下步驟一、3D視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件;二、3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,并將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在3D視頻播放系統(tǒng)的存儲模塊內(nèi)一目錄中;視頻3D數(shù)據(jù)文件的信息為數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別;三、3D視頻播放系統(tǒng)的3D文件重新封裝模塊將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件;所述數(shù)據(jù)轉(zhuǎn)換、重新封裝,按以下步驟3D文件重新封裝模塊從視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得時間戳;從音頻流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的音頻數(shù)據(jù);從存儲模塊的字幕流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的字幕數(shù)據(jù);按Mp4標準重新封裝;四、將數(shù)據(jù)包作為重新封裝的視頻3D數(shù)據(jù)文件的頭文件,按3DV格式加入到重新封裝后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)文件的頭文件中;將Mp4標準重新封裝的數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)、3DV格式的數(shù)據(jù)包,保存到3D視頻播放系統(tǒng)存儲模塊的另一目錄中,得到封裝后的視頻3D數(shù)據(jù)文件。一種3DV視頻封裝、播放系統(tǒng),設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲模塊、3D視頻解封裝模塊和播放模塊;所述2D文件讀取模塊,用于讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件;所述2D文件解封模塊,用于對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),獲得視頻3D數(shù)據(jù)文件的信息數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別;所述3D文件重新封裝模塊,用于將視頻3D數(shù)據(jù)文件的信息形成 單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按Mp4標準,重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件;所述3D視頻解封裝模塊,用于從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,得到的視頻3D數(shù)據(jù)文件的信息,按Mp4標準進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下;所述播放模塊,用于對顯示輸出設(shè)備進行3D輸出設(shè)置3D顯示、視圖類別、半寬識另IJ、半高識別;從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù)、圖像時間戳;從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳;從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳;對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼;按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備。本發(fā)明的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件,從外部存儲設(shè)備或計算機的硬盤中讀取。本發(fā)明的數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件。一種3DV視頻封裝系統(tǒng),設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲模塊;所述2D文件讀取模塊,用于從外部存儲設(shè)備或計算機的硬盤中讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件;所述2D文件解封模塊,用于對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),獲得視頻3D數(shù)據(jù)文件的信息數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別;所述3D文件重新封裝模塊,用于將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按Mp4標準,重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件。
本發(fā)明與現(xiàn)有技術(shù)相比,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),進行數(shù)據(jù)轉(zhuǎn)換,并將解封的帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件重新封裝,將3D文件的信息數(shù)據(jù)包附加于重新封裝的3D文件的頭文件中,直接進行播放,不對視頻文件進行二次壓縮,使圖像信息沒有損失,節(jié)省重新封裝一次相當于復(fù)制一次的時間,還可以在播放時不必對視頻進行解碼,就能快速得到3D立體信息,減少人工設(shè)置的時間,提聞播放的效率。
圖I是本發(fā)明實施例的3DV視頻封裝播放方法流程圖。圖2是本發(fā)明實施例的3DV視頻封裝播放系統(tǒng)圖。
圖3是本發(fā)明實施例的3DV視頻封裝播放裝置結(jié)構(gòu)圖。
具體實施例方式下面結(jié)合附圖和實施例對本發(fā)明作進一步詳細說明。3DV視頻信息包括視頻是否為3D視頻、3D視頻的視圖排列。如圖I所示,本發(fā)明的3DV視頻封裝、播放方法,包括封裝和播放,包括以下步驟一、3D視頻播放系統(tǒng)(系統(tǒng))的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件(2D文件)。系統(tǒng)可從外部存儲設(shè)備或計算機的硬盤中讀取2D文件。二、系統(tǒng)的2D文件解封模塊對2D文件進行解封裝,獲得視頻3D數(shù)據(jù)文件(3D文件)的信息,并將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)的存儲模塊內(nèi)一目錄中。3D文件的信息也可存儲于2D文件解封模塊中的3D文件的信息存儲子模塊中。三、系統(tǒng)的3D文件重新封裝模塊將存儲模塊(或2D文件解封模塊中的3D文件的信息存儲子模塊)內(nèi)的3D文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),按Mp4[IS0/IEC 14496-14]標準重新封裝成視頻3D數(shù)據(jù)文件(3D文件),將數(shù)據(jù)包作為3D文件的頭文件。數(shù)據(jù)包為含有3D文件的信息的3DV格式的文件。數(shù)據(jù)轉(zhuǎn)換、重新封裝,包括以下步驟1、3D文件重新封裝模塊從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),即視頻開始的第一幀圖像的數(shù)據(jù),并從第一幀圖像中取得時間戳。時間戳與2D文件中的時間戳一樣,方便在播放過程中視頻、音頻、字幕同步。2、從存儲模塊的音頻流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的音頻數(shù)據(jù)。3、從存儲模塊的字幕流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的字幕數(shù)據(jù)。4、3D文件重新封裝模塊將包含圖像和時間戳的第一幀圖像數(shù)據(jù),音頻和時間戳的第一幀音頻數(shù)據(jù),字幕和時間戳的第一幀字幕數(shù)據(jù),按Mp4[IS0/IEC14496-14]標準重新封裝。3D文件重新封裝模塊逐一讀取,轉(zhuǎn)換、存儲,直到最后一幀數(shù)據(jù)轉(zhuǎn)換、重新封裝的處理完畢,結(jié)束數(shù)據(jù)轉(zhuǎn)換、重新封裝流程。四、在系統(tǒng)的存儲模塊中存儲數(shù)據(jù)包,將數(shù)據(jù)包作為重新封裝的3D文件的頭文件。如表I所示,將數(shù)據(jù)包的信息結(jié)構(gòu),按3DV格式存儲,加入到重新封裝后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)文件的頭文件中。將Mp4標準重新封裝的數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),作為頭文件的3DV格式的數(shù)據(jù)包,保存到系統(tǒng)存儲模塊的另一目錄中,也可以存儲到外部存儲設(shè)備或計算機的硬盤中,得到封裝后的視頻3D數(shù)據(jù)文件。五、播放重新封裝后的3D文件,包括以下步驟1、3D視頻解封裝模塊按3DV格式,從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,也可從外部存儲設(shè)備或計算機的硬盤中讀取封裝后的視頻3D數(shù)據(jù)文件,得到3D文件的信息數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、是否半寬(半寬識別)、是否半高(半高識別),存放在存儲模塊中再一目錄下。 3,3D視頻解封裝模塊按Mp4標準對封裝后的視頻3D數(shù)據(jù)文件進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下。4、播放模塊對顯示輸出設(shè)備進行3D輸出設(shè)置,具體為(1)、3D顯示(播放3DV文件需要用3D顯示),(2)、視圖類別,(3)、半寬識別,(4)、半高識別。5、播放模塊從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),即視頻的開始的第一幀圖像數(shù)據(jù),從第一幀圖像中取得圖像時間戳。6、從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳。7、從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳。8、播放模塊對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼。9、播放模塊解碼完成后按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備。播放模塊逐一讀取,解碼、輸出到顯示輸出設(shè)備、音頻輸出設(shè)備,直到最后一幀數(shù)據(jù)處理完畢,結(jié)束播放流程。3D文件的信息為數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、是否半寬(半寬識別)、是否半聞(半聞識別)和保留位。其中,數(shù)據(jù)包大小為32位的數(shù)值型數(shù)據(jù),占用4個字節(jié),存儲順序為高位在前低位在后,如長度為24的數(shù)據(jù)包,十六進制值就為00000018。數(shù)據(jù)包名稱為32位的字符型數(shù)據(jù),占用4個字節(jié),由于是字符,需按MP4的標準應(yīng)順序存儲,所以數(shù)據(jù)包名稱為Pinf,十六進制值為70696e 66。視圖類別為32位字符型數(shù)據(jù),占用4個字節(jié),值定義為“PLR”、“PRL”、“PTD”、“PDT”、“IAB”、“IBA”,分別表標為左右并列視圖、右左并列視圖、上下視圖、下上視圖、行交
錯視圖左圖在第一行、行交錯視圖右圖在第一行。半寬識別指視頻目標文件的圖像是否為左右各占顯示屏的一半,半寬識別為16位數(shù)值型數(shù)據(jù),占用2字節(jié),“是”為0002,“否”為0001。半高識別指視頻目標文件的圖像是否為上下各占顯示屏的一半,半高識別為16位數(shù)值型數(shù)據(jù),占用2字節(jié),“是”為0002,“否”為0001。保留位為64位數(shù)值型數(shù)據(jù),占用8字節(jié),保留位是為了以后升級所用。如圖2所示,本發(fā)明的3DV視頻封裝、播放系統(tǒng)(系統(tǒng)),設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲模塊、3D視頻解封裝模塊和播放模塊。2D文件讀取模塊,用于讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件(2D文件),2D文件保存于外部存儲設(shè)備或計算機的硬盤中,2D文件讀取模塊將其從外部存儲設(shè)備或計算機的硬盤中導(dǎo)入至系統(tǒng)內(nèi)。2D文件解封模塊,用于對2D文件進行解封裝,將2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),并獲得3D文件的信息。2D文件解封模塊中設(shè)有3D文件的信息存儲子模塊,用于存儲3D文件的信息,3D文件的信息具體為數(shù)據(jù)包的大小、名稱、視圖類別、半高識別、半寬識別信息。3D文件重新封裝模塊,用于將3D文件的信息形成單獨的數(shù)據(jù)包,將解封的2D文件重新封裝。3D文件重新封裝模塊對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按Mp4標準,重新封裝成視頻3D數(shù)據(jù)文件(3D文件),將數(shù)據(jù)包作為3D文件的頭文件。視頻3D文件重新封裝單元可以是外接3D視頻封裝系統(tǒng)。存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流 數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件。存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件。3D視頻解封裝模塊用于按3DV格式,從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,得到3D文件的信息,按Mp4標準對3DV數(shù)據(jù)文件進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下。播放模塊用于對顯示輸出設(shè)備按3D文件的信息進行3D輸出設(shè)置,設(shè)置內(nèi)容為(1)、3D顯示(播放3DV文件需要用3D顯示),(2)、視圖類別,(3)、半寬識別,(4)、半高識別;從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得圖像時間戳;從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳;從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳;對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼;然后按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備。如圖3所示,本實施例的3DV視頻播放系統(tǒng),可采用以下3DV封裝播放裝置(裝置)實現(xiàn),該裝置設(shè)有CPU,CPU連接有存儲裝置、顯示裝置和喇叭。本發(fā)明的3D視頻封裝播放系統(tǒng),設(shè)置在CPU中。存儲裝置設(shè)有硬盤和/或SD卡、隨機存儲器RAM。顯示裝置為液晶IXD或發(fā)光二極管LED顯示屏。3DV視頻播放裝置工作過程為帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件(2D文件)從外部存儲設(shè)備或計算機的硬盤中被存入裝置的硬盤,CPU內(nèi)的2D文件解封模塊對2D文件進行解封裝,獲得3D文件的信息,將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在硬盤內(nèi)。CPU接到要求封裝視頻3D數(shù)據(jù)文件的指令后,CPU內(nèi)的3D文件重新封裝模塊從硬盤中將2D文件調(diào)入至RAM中,3D文件重新封裝模塊對3D文件的信息形成3DV格式的數(shù)據(jù)包,將視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),進行數(shù)據(jù)轉(zhuǎn)換、用Mp4標準重新封裝,將3D文件的信息形成3DV格式的數(shù)據(jù)包作為頭文件,保存于硬盤另一不同的區(qū)域,得到封裝后的視頻3D數(shù)據(jù)文件。CPU接到播放視頻3D數(shù)據(jù)文件的指令后,CPU內(nèi)的3D視頻解封裝模塊從硬盤中將封裝后的視頻3D數(shù)據(jù)文件調(diào)入至RAM中,得到3D文件的信息,按Mp4標準對封裝后的視頻3D數(shù)據(jù)文件進行解封裝,得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在RAM內(nèi)再一目錄下。CPU內(nèi)的播放模塊按3D文件的信息,對顯示輸出設(shè)備進行3D輸出設(shè)置,從RAM中對圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼,分別分時輸出顯示數(shù)據(jù)信號到顯示輸設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備。本實施例中,CPU采用Intel core 13-2100,系統(tǒng)采用VC++6. 0程序語言實現(xiàn)。2D文件讀取模塊讀取2D文件的命令 AVForrnatContext ^pFormatCtx=NLiLL;int video—index 二 -I;int. audio index =-1;int other index = -I;
// Open video file
if(avformat—opcri」nput(&.pForrnatCtx, url.c_str (), NULL, NULL)!—0) /7
讀取2D文件{
ft ERROR ("Couldn't open fi!e:%s", url.c str ()); vvritclong("Couldn't open file"); return -I; 2D文件解封模塊將2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)的命令
if(av—find—stream—info(pFormatCtx)<0) //得到流的總數(shù)如果小于 0 退出
{
Il ERROR ("Couldn't find stream information!"); vvi ilelongC'Couldn'l find strearn inforiTiation!"); av close input file (pFormatCtx); return -I;
}
for(int i = 0; i < pFormatCtx->nb—streams; i++) {
if(pFormatCtx->streams|i]->codec->codec_tyi3e==AVMEDIA_TYPE_VIDEO &&videoindex < 0) //如果是視頻流
video_index=i; } el se
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO &&audio—index < 0) //如果是音頻流
I
audio—i.ndex=i;
}else
other index=i;
J//其它流} °3D文件重新封裝模塊將3D文件的信息形成數(shù)據(jù)包的命令
const char* stereo—type—PLR = "PLR const char* stereo—type—PTD = "PTD const char* stereo—type—PRL = "PRL const char* stereo type PDT = "PDT ”; const char* stereo—type—ILR = "ILR const char* stereo—type—IRL = IRI r'; const char* stereo tvpe IAB = "IAB const char* stereo—type—IBA = "IBA const char* stereo—type—LiRL = "URL
Il 'PLR 5; PTD Y PRL_\ PDTJ,5 ILR—,,,IRL_,I入B」,IB\J ,’URL—, static int mov_write_pinf_tag(AVIOContext *pb, AVFormatContext *s)
{
int64_t pos = avio_te!i(pb);
const char* stereo type = stereo type PLR; unsigned short display—width = 2; unsigned short display height = I;
權(quán)利要求
1.一種3DV視頻封裝、播放方法,包括以下步驟 一、3D視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件; 二、3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,并將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù);視頻3D數(shù)據(jù)文件的信息為數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半聞識別; 三、3D視頻播放系統(tǒng)的3D文件重新封裝模塊將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述數(shù)據(jù)轉(zhuǎn)換、重新封裝,按以下步驟3D文件重新封裝模塊從視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得時間戳;從音頻流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的音頻數(shù)據(jù);從存儲模塊的字幕流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的字幕數(shù)據(jù);按Mp4標準重新封裝; 四、將數(shù)據(jù)包作為重新封裝的視頻3D數(shù)據(jù)文件的頭文件,按3DV格式加入到重新封裝后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)文件的頭文件中;將Mp4標準重新封裝的數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)、3DV格式的數(shù)據(jù)包,保存到3D視頻播放系統(tǒng)存儲模塊的另一目錄中,得到封裝后的視頻3D數(shù)據(jù)文件; 五、播放重新封裝后的視頻3D數(shù)據(jù)文件,按以下步驟3D視頻解封裝模塊按3DV格式,從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,得到視頻3D數(shù)據(jù)文件的信息;3D視頻解封裝模塊按Mp4標準對封裝后的視頻3D數(shù)據(jù)文件進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下;播放模塊對顯示輸出設(shè)備進行3D輸出設(shè)置,具體為3D顯示、視圖類別、半寬識別、半高識別;播放模塊從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得圖像時間戳;從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳;從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳,對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼,按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備,逐一讀取,解碼、輸出到顯示輸出設(shè)備、音頻輸出設(shè)備,直到最后一幀數(shù)據(jù)處理完畢,結(jié)束播放流程。
2.根據(jù)權(quán)利要求I所述的3DV視頻封裝、播放方法,其特征在于所述3D視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件,從外部存儲設(shè)備或計算機的硬盤中讀取。
3.根據(jù)權(quán)利要求I所述的3DV視頻封裝、播放方法,其特征在于所述3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在3D視頻播放系統(tǒng)的存儲模塊內(nèi)一目錄中。
4.根據(jù)權(quán)利要求I所述的3DV視頻封裝、播放方法,其特征在于所述3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,存儲于2D文件解封模塊中的3D文件的信息存儲子模塊中。
5.根據(jù)權(quán)利要求I所述的3DV視頻封裝、播放方法,其特征在于所述數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件。
6.一種3DV視頻封裝方法,包括以下步驟 一、3D視頻播放系統(tǒng)的2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件; 二、3D視頻播放系統(tǒng)的2D文件解封模塊對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,獲得視頻3D數(shù)據(jù)文件的信息,并將解封裝后的2D文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在3D視頻播放系統(tǒng)的存儲模塊內(nèi)一目錄中;視頻3D數(shù)據(jù)文件的信息為數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別; 三、3D視頻播放系統(tǒng)的3D文件重新封裝模塊將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,并將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件;所述數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件;所述數(shù)據(jù)轉(zhuǎn) 換、重新封裝,按以下步驟3D文件重新封裝模塊從視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù),從第一幀圖像中取得時間戳;從音頻流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的音頻數(shù)據(jù);從存儲模塊的字幕流數(shù)據(jù)取得第一幀圖像相應(yīng)時間戳的字幕數(shù)據(jù);按Mp4標準重新封裝; 四、將數(shù)據(jù)包作為重新封裝的視頻3D數(shù)據(jù)文件的頭文件,按3DV格式加入到重新封裝后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)、字幕流數(shù)據(jù)文件的頭文件中;將Mp4標準重新封裝的數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)、3DV格式的數(shù)據(jù)包,保存到3D視頻播放系統(tǒng)存儲模塊的另一目錄中,得到封裝后的視頻3D數(shù)據(jù)文件。
7.—種3DV視頻封裝、播放系統(tǒng),其特征在于所述3D視頻封裝、播放系統(tǒng)設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲模塊、3D視頻解封裝模塊和播放模塊; 所述2D文件讀取模塊,用于讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件; 所述2D文件解封模塊,用于對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),獲得視頻3D數(shù)據(jù)文件的信息數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別; 所述3D文件重新封裝模塊,用于將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按Mp4標準,重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件; 所述存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件; 所述3D視頻解封裝模塊,用于從存儲模塊中讀取封裝后的視頻3D數(shù)據(jù)文件,得到的視頻3D數(shù)據(jù)文件的信息,按Mp4標準進行解封裝得到數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),分別存放在系統(tǒng)內(nèi)的存儲模塊內(nèi)再一目錄下; 所述播放模塊,用于對顯示輸出設(shè)備進行3D輸出設(shè)置3D顯示、視圖類別、半寬識別、半高識別;從存儲模塊的視頻流數(shù)據(jù)中取得第一幀圖像數(shù)據(jù)、圖像時間戳;從音頻流數(shù)據(jù)取得第一幀的音頻數(shù)據(jù)和音頻時間戳;從字幕流數(shù)據(jù)取得第一幀的字幕數(shù)據(jù)和字幕時間戳;對第一幀圖像數(shù)據(jù),音頻數(shù)據(jù),字幕數(shù)據(jù),分別進行解碼;按圖像時間戳,字幕時間戳分別分時輸出顯示數(shù)據(jù)信號到顯示輸出設(shè)備,按音頻時間戳輸出音頻數(shù)據(jù)信號到音頻輸出設(shè)備。
8.根據(jù)權(quán)利要求7所述的3DV視頻封裝、播放系統(tǒng),其特征在于所述2D文件讀取模塊讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件,從外部存儲設(shè)備或計算機的硬盤中讀取。
9.根據(jù)權(quán)利要求7所述的3DV視頻封裝、播放系統(tǒng),其特征在于所述數(shù)據(jù)包為含有視頻3D數(shù)據(jù)文件的信息的3DV格式的文件。
10.一種3DV視頻封裝系統(tǒng),其特征在于所述3D視頻封裝系統(tǒng)設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲 模塊; 所述2D文件讀取模塊,用于從外部存儲設(shè)備或計算機的硬盤中讀取帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件; 所述2D文件解封模塊,用于對帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件進行解封裝,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),獲得視頻3D數(shù)據(jù)文件的信息數(shù)據(jù)包大小、數(shù)據(jù)包名稱、視圖類別、半寬識別、半高識別; 所述3D文件重新封裝模塊,用于將視頻3D數(shù)據(jù)文件的信息形成單獨的數(shù)據(jù)包,對視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)進行數(shù)據(jù)轉(zhuǎn)換,將數(shù)據(jù)轉(zhuǎn)換后的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù)按Mp4標準,重新封裝成視頻3D數(shù)據(jù)文件,將數(shù)據(jù)包作為視頻3D數(shù)據(jù)文件的頭文件; 所述存儲模塊,用于存儲數(shù)據(jù)包,被拆分的視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),封裝后的視頻3D數(shù)據(jù)文件。
全文摘要
本發(fā)明公開了一種3DV視頻封裝、播放方法及其系統(tǒng),要解決的技術(shù)問題是在播放顯示立體視頻時,正確顯示立體效果圖像。本發(fā)明的3DV視頻封裝、播放方法,包括讀取,解封裝,數(shù)據(jù)轉(zhuǎn)換,重新封裝,存儲。本發(fā)明的3DV視頻封裝、播放系統(tǒng),設(shè)有2D文件讀取模塊、2D文件解封模塊、3D文件重新封裝模塊、存儲模塊、3D視頻解封裝模塊和播放模塊。本發(fā)明與現(xiàn)有技術(shù)相比,將帶3D內(nèi)容的2D封裝視頻數(shù)據(jù)文件拆分成視頻流數(shù)據(jù)、音頻流數(shù)據(jù)和字幕流數(shù)據(jù),進行數(shù)據(jù)轉(zhuǎn)換,重新封裝,將3D信息數(shù)據(jù)包附加于重新封裝的3D文件的頭文件中,直接進行播放,使圖像信息沒有損失,就能快速得到3D立體信息,減少人工設(shè)置的時間,提高播放的效率。
文檔編號H04N13/00GK102970556SQ20121050731
公開日2013年3月13日 申請日期2012年12月3日 優(yōu)先權(quán)日2012年12月3日
發(fā)明者楊亞軍 申請人:深圳市維尚視界立體顯示技術(shù)有限公司