Mp4文件生成及读取方法

文档序号:6739426阅读:1933来源:国知局

专利名称::Mp4文件生成及读取方法
技术领域
:本发明涉及一种音视频处理技术,尤其是涉及一种MP4文件生成及读取方法。
背景技术
:对于音频、视频文件而言,MP4文件封装格式近来得到较快发展和较为广泛的应用。所述的MP4文件封装格式,对应的标准为IS0/IEC1449612。MP4文件格式作为开放容器,几乎可用来描述所有的媒体结构,目前被广泛用于封装H.264视频和AAC音频,是高清视频的代表。同时,由于受到美国Apple公司产品的支持,使得该格式发展前景较好。在生成或者录制MP4文件时,有可能会碰到诸如停电、生成设备或录制设备的系统故障等原因导致录制过程异常中断,从而导致MP4文件不能使用的情况。由于MP4文件格式作为开放容器,而MP4文件是由很多的容器(box)组成的。box主要分成两类,一类是数据(即音频或视频数据),另一类是参数。在读取时需要得到所有的信息,一旦文件有数据或者参数不符合或者不完整的情况,就会导致整个MP4文件读取失败。
发明内容本发明提出一种MP4文件生成及读取方法,以解决目前在生成MP4文件的过程中产生异常中断时导致MP4文件无法正确读取的技术问题。本发明采用如下技术方案实现一种MP4文件生成方法,其包括步骤对每路媒体数据分别创建4个信息记录文件;输入需要生成MP4文件的媒体数据;按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stssbox、sttsbox、stcobox和stszbox的信息分别记录至4个信息记录文件之中;生成MP4文件,且4个信息记录文件中分别记录了每巾贞媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息。其中,每个信息记录文件均由相应的记录指针控制进行信息读写操作。其中,MP4封装格式包括有且只有一个作为MP4格式标志的“ftyp”类型的box;有且只有一个包含所有媒体数据的宏观描述信息的“moov”类型的box;MP4文件的媒体数据包含在“mdat”类型的box。其中,“moov”类型的box包括2个子box:用于记录创建时间、修改时间、时间度量标尺、可播放时长信息的mvhdbox;具有一系列子box用于描述每个媒体轨道的具体信息的trakbox。其中,trakbox具体包含表述本视频轨或音频轨的基本信息的tkhdbox,描述了编辑片段信息用作文件定位的edtsbox,以及包含mdhd、hdlr和minf三类子box的mdiabox;其中,minfbox具有vmhd、dinf和stbl这三个子box。其中,stblbox里面包含对媒体数据的样本进行各种描述的子box,其中包括stssbox、sttsbox、stcobox和stszbox。另外,本发明公开一种MP4文件读取方法,其包括步骤根据4个信息记录文件中每巾贞媒体数据对应stssbox、sttsbox、stcobox和Stszbox的信息,从MP4文件中读出每帧媒体数据及对应的I帧;根据读出每帧媒体数据及对应的I帧,得到生成MP4文件之前的媒体数据;其中,MP4文件是采用所述MP4文件生成方法所生成的。与现有技术相比,本发明具有如下有益效果本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、stco和StSZ等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(B0X),还原原始的音视频数据。从而使得重要的资料不会流失。另外,本发明生成MP4文件的方法简单、实现容易。图I是本发明生成MP4文件的流程示意图;图2是本发明读取MP4文件的流程示意图。具体实施例方式为了便于理解本发明,先将MP4文件格式做适当介绍。MP4文件是指符合IS0/IEC1449612标准的文件,由若干个封装有数据的容器(box)(其中,每个box的结构都是4字节的size,4字节的type,还有一些data数据)组成,具体包括一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(电影容器,MovieBox),它是一种内容容器(containerbox),不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moovbox下有mvhd和trak这2个子box,其中,mvhdbox中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息,而trakbox(轨道容器)中的一系列子box描述了每个媒体轨道的具体信息;MP4文件的媒体数据包含在“mdat”类型的box(媒体数据容器,MidiaDataBox)中,该类型的box也是containerbox,可以有多个,也可以没有(当媒体数据全部引用其他文件时);在14文件末尾是一个mfrabox,为媒体数据的索引文件,可通过查询直接定位所需时间点的媒体数据。其中,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了,几乎关于所有核心数据描述都放在这个box里面。stblbox也是一个容器,全称是sampletable。stblbox里面包含对样本(sample)进行各种描述的子box。其中,样本(sample)是MP4文件数据的基本单位,一个样本就是表示音视频的一帧。stbl里面包含的几类主要的样本容器(samplebox),分别是I、样本时间容器(sttsbox,timetosamplebox),存储了样本的时间信息。Sttsbox能很方便的根据时间标签(timestamp)找到对应的样本,或者获取某个样本对应的时间标签。2、样本关键巾贞容器(stssbox,syncsamplebox),存储了每个关键巾贞的样本ID,根据stssbox能方便的找到当前巾贞最近的关键中贞。3、样本大小容器(stszbox,samplesizebox),stszbox可以描述每个样本的大小。4、样本位置容器(stcobox,chunkoffsetbox),stcobox描述了每个块(chunk)在文件中的绝对偏移位置。在生成MP4文件的过程中,遇到异常情况导致进程终止时,一般来说,音视频的数据是在的。但是由于没有了参数,同时由于音视频在封装成MP4时会丢掉一些头信息,所以无法还原成原始的音视频数据。所以,本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、stco和stsz等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(B0X),还原原始的音视频数据。从而使得重要的资料不会流失。如图I所示,在一个优选实施例中,本发明生成MP4文件包括如下流程步骤S11、由于每路媒体数据(即每路音视频数据)在生成MP4时都有对应的stss、stts、stco和stsz等box信息,因此,在生成MP4文件之前,对每路媒体数据分别创建4个信息记录文件和相应的记录指针,4个信息记录文件分别在各自记录指针的控制下进行信息读写操作,在生成MP4文件时保持并动态更新stssbox、sttsbox、stcobox和stszbox的信息。步骤S12、输入需要生成MP4文件的媒体数据。步骤S13、按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stssbox、sttsbox、stcobox和stszbox的信息分别记录至步骤Sll创建的4个信息记录文件之中。步骤S14、录制媒体数据完毕,生成MP4文件,且4个信息记录文件中分别记录了每中贞媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息。若上述步骤S14在生成MP4文件的过程中,遇到异常情况导致进程终止时,导致MP4文件损坏,MP4文件无法正常读取,此时,可以结合4个信息记录文件,从MP4文件中读取已经录制的媒体数据,结合图2所示,具体包括如下步骤步骤S21、根据4个信息记录文件中每巾贞媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息,从MP4文件中读出每巾贞媒体数据及对应的I中贞。先从用于记录stcobox的信息记录文件中读取记录第I巾贞媒体数据在文件中的起始位置的信息、从用于记录stszbox的信息记录文件中读取记录第I帧媒体数据的大小信息(或数据长度信息)、从用于记录sttsbox的信息记录文件中读取记录第I帧媒体数据的时间信息、从用于记录stssbox的信息记录文件中读取记录第I帧媒体数据对应的I帧。以此类推,可以得到MP4录制中断前所有帧的媒体数据。步骤S22、根据读出每帧媒体数据及对应的I帧,还原得到录制时的媒体数据。综上,本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、Stco和stsz等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(B0X),还原原始的音视频数据。从而使得重要的资料不会流失。另外,本发明生成MP4文件的方法简单、实现容易。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。权利要求1.一种MP4文件生成方法,其特征在于,所述方法包括步骤对每路媒体数据分别创建4个信息记录文件;输入需要生成MP4文件的媒体数据;按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stssbox、sttsbox、stcobox和stszbox的信息分别记录至4个信息记录文件之中;生成MP4文件,且4个信息记录文件中分别记录了每巾贞媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息。2.根据权利要求I所述MP4文件生成方法,其特征在于,每个信息记录文件均由相应的记录指针控制进行信息读写操作。3.根据权利要求I所述MP4文件生成方法,其特征在于,MP4封装格式包括有且只有一个作为MP4格式标志的“ftyp”类型的box;有且只有一个包含所有媒体数据的宏观描述信息的“moov”类型的box;MP4文件的媒体数据包含在“mdat”类型的box。4.根据权利要求3所述MP4文件生成方法,其特征在于,“moov”类型的box包括2个子box:用于记录创建时间、修改时间、时间度量标尺、可播放时长信息的mvhdbox;具有一系列子box用于描述每个媒体轨道的具体信息的trakbox。5.根据权利要求4所述MP4文件生成方法,其特征在于,trakbox具体包含表述本视频轨或音频轨的基本信息的tkhdbox,描述了编辑片段信息用作文件定位的edtsbox,以及包含mdhcUhdlr和minf三类子box的mdiabox;其中,minfbox具有vmhcUdinf和stbl这三个子box。6.根据权利要求5所述MP4文件生成方法,其特征在于,stblbox里面包含对媒体数据的样本进行各种描述的子box,其中包括stssbox、sttsbox、stcobox和stszbox。7.—种MP4文件读取方法,其特征在于,所述方法包括步骤根据4个信息记录文件中每巾贞媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息,从MP4文件中读出每帧媒体数据及对应的I帧;根据读出每帧媒体数据及对应的I帧,得到生成MP4文件之前的媒体数据;其中,MP4文件是采用权利要求1-6任何一项所述方法所生成。全文摘要本发明公开一种MP4文件生成及读取方法。其中,所述MP4文件生成方法包括步骤对每路媒体数据分别创建4个信息记录文件;输入需要生成MP4文件的媒体数据;按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stssbox、sttsbox、stcobox和stszbox的信息分别记录至4个信息记录文件之中;生成MP4文件,且4个信息记录文件中分别记录了每帧媒体数据对应stssbox、sttsbox、stcobox和stszbox的信息。本发明使得重要的资料不会流失,具有方法简单、实现容易的优点。文档编号G11B20/10GK102723090SQ20121022970公开日2012年10月10日申请日期2012年7月4日优先权日2012年7月4日发明者廖海,瞿新申请人:深圳锐取信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1