两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

Mp4文件生成及讀取方法

文檔序號:6739426閱讀:1984來源:國知局

專利名稱::Mp4文件生成及讀取方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種音視頻處理技術(shù),尤其是涉及一種MP4文件生成及讀取方法。
背景技術(shù)
:對于音頻、視頻文件而言,MP4文件封裝格式近來得到較快發(fā)展和較為廣泛的應(yīng)用。所述的MP4文件封裝格式,對應(yīng)的標(biāo)準(zhǔn)為IS0/IEC1449612。MP4文件格式作為開放容器,幾乎可用來描述所有的媒體結(jié)構(gòu),目前被廣泛用于封裝H.264視頻和AAC音頻,是高清視頻的代表。同時,由于受到美國Apple公司產(chǎn)品的支持,使得該格式發(fā)展前景較好。在生成或者錄制MP4文件時,有可能會碰到諸如停電、生成設(shè)備或錄制設(shè)備的系統(tǒng)故障等原因?qū)е落浿七^程異常中斷,從而導(dǎo)致MP4文件不能使用的情況。由于MP4文件格式作為開放容器,而MP4文件是由很多的容器(box)組成的。box主要分成兩類,一類是數(shù)據(jù)(即音頻或視頻數(shù)據(jù)),另一類是參數(shù)。在讀取時需要得到所有的信息,一旦文件有數(shù)據(jù)或者參數(shù)不符合或者不完整的情況,就會導(dǎo)致整個MP4文件讀取失敗。
發(fā)明內(nèi)容本發(fā)明提出一種MP4文件生成及讀取方法,以解決目前在生成MP4文件的過程中產(chǎn)生異常中斷時導(dǎo)致MP4文件無法正確讀取的技術(shù)問題。本發(fā)明采用如下技術(shù)方案實(shí)現(xiàn)一種MP4文件生成方法,其包括步驟對每路媒體數(shù)據(jù)分別創(chuàng)建4個信息記錄文件;輸入需要生成MP4文件的媒體數(shù)據(jù);按照MP4封裝格式錄制媒體數(shù)據(jù),在每錄制一幀媒體數(shù)據(jù)時,將該幀媒體數(shù)據(jù)對應(yīng)的stssbox、sttsbox、stcobox和stszbox的信息分別記錄至4個信息記錄文件之中;生成MP4文件,且4個信息記錄文件中分別記錄了每巾貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息。其中,每個信息記錄文件均由相應(yīng)的記錄指針控制進(jìn)行信息讀寫操作。其中,MP4封裝格式包括有且只有一個作為MP4格式標(biāo)志的“ftyp”類型的box;有且只有一個包含所有媒體數(shù)據(jù)的宏觀描述信息的“moov”類型的box;MP4文件的媒體數(shù)據(jù)包含在“mdat”類型的box。其中,“moov”類型的box包括2個子box:用于記錄創(chuàng)建時間、修改時間、時間度量標(biāo)尺、可播放時長信息的mvhdbox;具有一系列子box用于描述每個媒體軌道的具體信息的trakbox。其中,trakbox具體包含表述本視頻軌或音頻軌的基本信息的tkhdbox,描述了編輯片段信息用作文件定位的edtsbox,以及包含mdhd、hdlr和minf三類子box的mdiabox;其中,minfbox具有vmhd、dinf和stbl這三個子box。其中,stblbox里面包含對媒體數(shù)據(jù)的樣本進(jìn)行各種描述的子box,其中包括stssbox、sttsbox、stcobox和stszbox。另外,本發(fā)明公開一種MP4文件讀取方法,其包括步驟根據(jù)4個信息記錄文件中每巾貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和Stszbox的信息,從MP4文件中讀出每幀媒體數(shù)據(jù)及對應(yīng)的I幀;根據(jù)讀出每幀媒體數(shù)據(jù)及對應(yīng)的I幀,得到生成MP4文件之前的媒體數(shù)據(jù);其中,MP4文件是采用所述MP4文件生成方法所生成的。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果本發(fā)明可以采用將部分重要的參數(shù)數(shù)據(jù)生成文件的方式,比如stss、stts、stco和StSZ等容器(box),在生成音視頻數(shù)據(jù)的同時,將參數(shù)保存下來,生成獨(dú)立的文件。這樣即使遇到異常終止的情況,也可以根據(jù)保存的參數(shù)容器(B0X),還原原始的音視頻數(shù)據(jù)。從而使得重要的資料不會流失。另外,本發(fā)明生成MP4文件的方法簡單、實(shí)現(xiàn)容易。圖I是本發(fā)明生成MP4文件的流程示意圖;圖2是本發(fā)明讀取MP4文件的流程示意圖。具體實(shí)施例方式為了便于理解本發(fā)明,先將MP4文件格式做適當(dāng)介紹。MP4文件是指符合IS0/IEC1449612標(biāo)準(zhǔn)的文件,由若干個封裝有數(shù)據(jù)的容器(box)(其中,每個box的結(jié)構(gòu)都是4字節(jié)的size,4字節(jié)的type,還有一些data數(shù)據(jù))組成,具體包括一個MP4文件首先會有且只有一個“ftyp”類型的box,作為MP4格式的標(biāo)志并包含關(guān)于文件的一些信息;之后會有且只有一個“moov”類型的box(電影容器,MovieBox),它是一種內(nèi)容容器(containerbox),不包含具體媒體數(shù)據(jù),但包含本文件中所有媒體數(shù)據(jù)的宏觀描述信息,moovbox下有mvhd和trak這2個子box,其中,mvhdbox中記錄了創(chuàng)建時間、修改時間、時間度量標(biāo)尺、可播放時長等信息,而trakbox(軌道容器)中的一系列子box描述了每個媒體軌道的具體信息;MP4文件的媒體數(shù)據(jù)包含在“mdat”類型的box(媒體數(shù)據(jù)容器,MidiaDataBox)中,該類型的box也是containerbox,可以有多個,也可以沒有(當(dāng)媒體數(shù)據(jù)全部引用其他文件時);在14文件末尾是一個mfrabox,為媒體數(shù)據(jù)的索引文件,可通過查詢直接定位所需時間點(diǎn)的媒體數(shù)據(jù)。其中,trakbox里面包含三類子box,分別是tkhcUedts和mdia,tkhd主要表述本視頻軌或音頻軌的一些基本信息,其域與前述的mvhd類似,不過mvhd描述的是整個文件的信息,而tkhd描述是本軌道的信息。edts是一個容器box,里面通過包含子boxelst描述一些編輯片段信息,在文件的定位會有一些用處。trakbox里面最重要的子box就是mdiabox了,這個box也是一個容器box,里面包含mdhcUhdlr和minf三類子box。minfbox里面又分別有vmhd(或smhd)(分別表示視頻和音頻)、dinf和stbl這三個box中,最重要的信息保存在stblbox中,stblbox可以說是mp4文件中最重要的box了,幾乎關(guān)于所有核心數(shù)據(jù)描述都放在這個box里面。stblbox也是一個容器,全稱是sampletable。stblbox里面包含對樣本(sample)進(jìn)行各種描述的子box。其中,樣本(sample)是MP4文件數(shù)據(jù)的基本單位,一個樣本就是表示音視頻的一幀。stbl里面包含的幾類主要的樣本容器(samplebox),分別是I、樣本時間容器(sttsbox,timetosamplebox),存儲了樣本的時間信息。Sttsbox能很方便的根據(jù)時間標(biāo)簽(timestamp)找到對應(yīng)的樣本,或者獲取某個樣本對應(yīng)的時間標(biāo)簽。2、樣本關(guān)鍵巾貞容器(stssbox,syncsamplebox),存儲了每個關(guān)鍵巾貞的樣本ID,根據(jù)stssbox能方便的找到當(dāng)前巾貞最近的關(guān)鍵中貞。3、樣本大小容器(stszbox,samplesizebox),stszbox可以描述每個樣本的大小。4、樣本位置容器(stcobox,chunkoffsetbox),stcobox描述了每個塊(chunk)在文件中的絕對偏移位置。在生成MP4文件的過程中,遇到異常情況導(dǎo)致進(jìn)程終止時,一般來說,音視頻的數(shù)據(jù)是在的。但是由于沒有了參數(shù),同時由于音視頻在封裝成MP4時會丟掉一些頭信息,所以無法還原成原始的音視頻數(shù)據(jù)。所以,本發(fā)明可以采用將部分重要的參數(shù)數(shù)據(jù)生成文件的方式,比如stss、stts、stco和stsz等容器(box),在生成音視頻數(shù)據(jù)的同時,將參數(shù)保存下來,生成獨(dú)立的文件。這樣即使遇到異常終止的情況,也可以根據(jù)保存的參數(shù)容器(B0X),還原原始的音視頻數(shù)據(jù)。從而使得重要的資料不會流失。如圖I所示,在一個優(yōu)選實(shí)施例中,本發(fā)明生成MP4文件包括如下流程步驟S11、由于每路媒體數(shù)據(jù)(即每路音視頻數(shù)據(jù))在生成MP4時都有對應(yīng)的stss、stts、stco和stsz等box信息,因此,在生成MP4文件之前,對每路媒體數(shù)據(jù)分別創(chuàng)建4個信息記錄文件和相應(yīng)的記錄指針,4個信息記錄文件分別在各自記錄指針的控制下進(jìn)行信息讀寫操作,在生成MP4文件時保持并動態(tài)更新stssbox、sttsbox、stcobox和stszbox的信息。步驟S12、輸入需要生成MP4文件的媒體數(shù)據(jù)。步驟S13、按照MP4封裝格式錄制媒體數(shù)據(jù),在每錄制一幀媒體數(shù)據(jù)時,將該幀媒體數(shù)據(jù)對應(yīng)的stssbox、sttsbox、stcobox和stszbox的信息分別記錄至步驟Sll創(chuàng)建的4個信息記錄文件之中。步驟S14、錄制媒體數(shù)據(jù)完畢,生成MP4文件,且4個信息記錄文件中分別記錄了每中貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息。若上述步驟S14在生成MP4文件的過程中,遇到異常情況導(dǎo)致進(jìn)程終止時,導(dǎo)致MP4文件損壞,MP4文件無法正常讀取,此時,可以結(jié)合4個信息記錄文件,從MP4文件中讀取已經(jīng)錄制的媒體數(shù)據(jù),結(jié)合圖2所示,具體包括如下步驟步驟S21、根據(jù)4個信息記錄文件中每巾貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息,從MP4文件中讀出每巾貞媒體數(shù)據(jù)及對應(yīng)的I中貞。先從用于記錄stcobox的信息記錄文件中讀取記錄第I巾貞媒體數(shù)據(jù)在文件中的起始位置的信息、從用于記錄stszbox的信息記錄文件中讀取記錄第I幀媒體數(shù)據(jù)的大小信息(或數(shù)據(jù)長度信息)、從用于記錄sttsbox的信息記錄文件中讀取記錄第I幀媒體數(shù)據(jù)的時間信息、從用于記錄stssbox的信息記錄文件中讀取記錄第I幀媒體數(shù)據(jù)對應(yīng)的I幀。以此類推,可以得到MP4錄制中斷前所有幀的媒體數(shù)據(jù)。步驟S22、根據(jù)讀出每幀媒體數(shù)據(jù)及對應(yīng)的I幀,還原得到錄制時的媒體數(shù)據(jù)。綜上,本發(fā)明可以采用將部分重要的參數(shù)數(shù)據(jù)生成文件的方式,比如stss、stts、Stco和stsz等容器(box),在生成音視頻數(shù)據(jù)的同時,將參數(shù)保存下來,生成獨(dú)立的文件。這樣即使遇到異常終止的情況,也可以根據(jù)保存的參數(shù)容器(B0X),還原原始的音視頻數(shù)據(jù)。從而使得重要的資料不會流失。另外,本發(fā)明生成MP4文件的方法簡單、實(shí)現(xiàn)容易。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1.一種MP4文件生成方法,其特征在于,所述方法包括步驟對每路媒體數(shù)據(jù)分別創(chuàng)建4個信息記錄文件;輸入需要生成MP4文件的媒體數(shù)據(jù);按照MP4封裝格式錄制媒體數(shù)據(jù),在每錄制一幀媒體數(shù)據(jù)時,將該幀媒體數(shù)據(jù)對應(yīng)的stssbox、sttsbox、stcobox和stszbox的信息分別記錄至4個信息記錄文件之中;生成MP4文件,且4個信息記錄文件中分別記錄了每巾貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息。2.根據(jù)權(quán)利要求I所述MP4文件生成方法,其特征在于,每個信息記錄文件均由相應(yīng)的記錄指針控制進(jìn)行信息讀寫操作。3.根據(jù)權(quán)利要求I所述MP4文件生成方法,其特征在于,MP4封裝格式包括有且只有一個作為MP4格式標(biāo)志的“ftyp”類型的box;有且只有一個包含所有媒體數(shù)據(jù)的宏觀描述信息的“moov”類型的box;MP4文件的媒體數(shù)據(jù)包含在“mdat”類型的box。4.根據(jù)權(quán)利要求3所述MP4文件生成方法,其特征在于,“moov”類型的box包括2個子box:用于記錄創(chuàng)建時間、修改時間、時間度量標(biāo)尺、可播放時長信息的mvhdbox;具有一系列子box用于描述每個媒體軌道的具體信息的trakbox。5.根據(jù)權(quán)利要求4所述MP4文件生成方法,其特征在于,trakbox具體包含表述本視頻軌或音頻軌的基本信息的tkhdbox,描述了編輯片段信息用作文件定位的edtsbox,以及包含mdhcUhdlr和minf三類子box的mdiabox;其中,minfbox具有vmhcUdinf和stbl這三個子box。6.根據(jù)權(quán)利要求5所述MP4文件生成方法,其特征在于,stblbox里面包含對媒體數(shù)據(jù)的樣本進(jìn)行各種描述的子box,其中包括stssbox、sttsbox、stcobox和stszbox。7.—種MP4文件讀取方法,其特征在于,所述方法包括步驟根據(jù)4個信息記錄文件中每巾貞媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息,從MP4文件中讀出每幀媒體數(shù)據(jù)及對應(yīng)的I幀;根據(jù)讀出每幀媒體數(shù)據(jù)及對應(yīng)的I幀,得到生成MP4文件之前的媒體數(shù)據(jù);其中,MP4文件是采用權(quán)利要求1-6任何一項(xiàng)所述方法所生成。全文摘要本發(fā)明公開一種MP4文件生成及讀取方法。其中,所述MP4文件生成方法包括步驟對每路媒體數(shù)據(jù)分別創(chuàng)建4個信息記錄文件;輸入需要生成MP4文件的媒體數(shù)據(jù);按照MP4封裝格式錄制媒體數(shù)據(jù),在每錄制一幀媒體數(shù)據(jù)時,將該幀媒體數(shù)據(jù)對應(yīng)的stssbox、sttsbox、stcobox和stszbox的信息分別記錄至4個信息記錄文件之中;生成MP4文件,且4個信息記錄文件中分別記錄了每幀媒體數(shù)據(jù)對應(yīng)stssbox、sttsbox、stcobox和stszbox的信息。本發(fā)明使得重要的資料不會流失,具有方法簡單、實(shí)現(xiàn)容易的優(yōu)點(diǎn)。文檔編號G11B20/10GK102723090SQ20121022970公開日2012年10月10日申請日期2012年7月4日優(yōu)先權(quán)日2012年7月4日發(fā)明者廖海,瞿新申請人:深圳銳取信息技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
京山县| 曲麻莱县| 双辽市| 东港市| 宁都县| 连平县| 六盘水市| 临桂县| 伽师县| 宁阳县| 乃东县| 修文县| 邯郸县| 新巴尔虎左旗| 民县| 博湖县| 浙江省| 峡江县| 竹山县| 阳西县| 大冶市| 阿巴嘎旗| 绥宁县| 礼泉县| 济阳县| 青海省| 富川| 沛县| 长垣县| 韶山市| 定南县| 崇左市| 高台县| 临汾市| 伊金霍洛旗| 武威市| 兴义市| 甘肃省| 辽中县| 宽甸| 杭锦旗|