欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Mp4文件生成及讀取方法

文檔序號(hào):6739426閱讀:1983來(lái)源:國(guó)知局

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