CN102723090A - Mp4文件生成及读取方法 - Google Patents
Mp4文件生成及读取方法 Download PDFInfo
- Publication number
- CN102723090A CN102723090A CN2012102297013A CN201210229701A CN102723090A CN 102723090 A CN102723090 A CN 102723090A CN 2012102297013 A CN2012102297013 A CN 2012102297013A CN 201210229701 A CN201210229701 A CN 201210229701A CN 102723090 A CN102723090 A CN 102723090A
- Authority
- CN
- China
- Prior art keywords
- box
- file
- information
- media data
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management Or Editing Of Information On Record Carriers (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开一种MP4文件生成及读取方法。其中,所述MP4文件生成方法包括步骤:对每路媒体数据分别创建4个信息记录文件;输入需要生成MP4文件的媒体数据;按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stss box、stts box、stco box和stsz box的信息分别记录至4个信息记录文件之中;生成MP4文件,且4个信息记录文件中分别记录了每帧媒体数据对应stss box、stts box、stco box和stsz box的信息。本发明使得重要的资料不会流失,具有方法简单、实现容易的优点。
Description
技术领域
本发明涉及一种音视频处理技术,尤其是涉及一种MP4文件生成及读取方法。
背景技术
对于音频、视频文件而言,MP4文件封装格式近来得到较快发展和较为广泛的应用。所述的MP4文件封装格式,对应的标准为ISO/IEC 1449612。MP4文件格式作为开放容器,几乎可用来描述所有的媒体结构,目前被广泛用于封装H.264视频和AAC音频,是高清视频的代表。同时,由于受到美国Apple公司产品的支持,使得该格式发展前景较好。
在生成或者录制MP4文件时,有可能会碰到诸如停电、生成设备或录制设备的系统故障等原因导致录制过程异常中断,从而导致MP4文件不能使用的情况。
由于MP4文件格式作为开放容器,而MP4文件是由很多的容器(box)组成的。box主要分成两类,一类是数据(即音频或视频数据),另一类是参数。在读取时需要得到所有的信息,一旦文件有数据或者参数不符合或者不完整的情况,就会导致整个MP4文件读取失败。
发明内容
本发明提出一种MP4文件生成及读取方法,以解决目前在生成MP4文件的过程中产生异常中断时导致MP4文件无法正确读取的技术问题。
本发明采用如下技术方案实现:一种MP4文件生成方法,其包括步骤:
对每路媒体数据分别创建4个信息记录文件;
输入需要生成MP4文件的媒体数据;
按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stss box、stts box、stco box和stsz box的信息分别记录至4个信息记录文件之中;
生成MP4文件,且4个信息记录文件中分别记录了每帧媒体数据对应stssbox、stts box、stco box和stsz box的信息。
其中,每个信息记录文件均由相应的记录指针控制进行信息读写操作。
其中,MP4封装格式包括:有且只有一个作为MP4格式标志的“ftyp”类型的box;有且只有一个包含所有媒体数据的宏观描述信息的“moov”类型的box;MP4文件的媒体数据包含在“mdat”类型的box。
其中,“moov”类型的box包括2个子box:用于记录创建时间、修改时间、时间度量标尺、可播放时长信息的mvhd box;具有一系列子box用于描述每个媒体轨道的具体信息的trak box。
其中,trak box具体包含:表述本视频轨或音频轨的基本信息的tkhd box,描述了编辑片段信息用作文件定位的edts box,以及包含mdhd、hdlr和minf三类子box的mdia box;其中,minfbox具有vmhd、dinf和stbl这三个子box。
其中,stbl box里面包含对媒体数据的样本进行各种描述的子box,其中包括stss box、stts box、stco box和stsz box。
另外,本发明公开一种MP4文件读取方法,其包括步骤:
根据4个信息记录文件中每帧媒体数据对应stss box、stts box、stco box和stsz box的信息,从MP4文件中读出每帧媒体数据及对应的I帧;
根据读出每帧媒体数据及对应的I帧,得到生成MP4文件之前的媒体数据;
其中,MP4文件是采用所述MP4文件生成方法所生成的。
与现有技术相比,本发明具有如下有益效果:
本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、stco和stsz等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(BOX),还原原始的音视频数据。从而使得重要的资料不会流失。另外,本发明生成MP4文件的方法简单、实现容易。
附图说明
图1是本发明生成MP4文件的流程示意图;
图2是本发明读取MP4文件的流程示意图。
具体实施方式
为了便于理解本发明,先将MP4文件格式做适当介绍。
MP4文件是指符合ISO/IEC1449612标准的文件,由若干个封装有数据的容器(box)(其中,每个box的结构都是4字节的size,4字节的type,还有一些data数据)组成,具体包括:一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(电影容器,Movie Box),它是一种内容容器(container box),不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak这2个子box,其中,mvhd box中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息,而trak box(轨道容器)中的一系列子box描述了每个媒体轨道的具体信息;MP4文件的媒体数据包含在“mdat”类型的box(媒体数据容器,Midia Data Box)中,该类型的box也是container box,可以有多个,也可以没有(当媒体数据全部引用其他文件时);在MP4文件末尾是一个mfra box,为媒体数据的索引文件,可通过查询直接定位所需时间点的媒体数据。
其中,trak box里面包含三类子box,分别是tkhd、edts和mdia,tkhd主要表述本视频轨或音频轨的一些基本信息,其域与前述的mvhd类似,不过mvhd描述的是整个文件的信息,而tkhd描述是本轨道的信息。edts是一个容器box,里面通过包含子box elst描述一些编辑片段信息,在文件的定位会有一些用处。trak box里面最重要的子box就是mdia box了,这个box也是一个容器box,里面包含mdhd、hdlr和minf三类子box。minf box里面又分别有vmhd(或smhd)(分别表示视频和音频)、dinf和stbl这三个box中,最重要的信息保存在stbl box中,stbl box可以说是mp4文件中最重要的box了,几乎关于所有核心数据描述都放在这个box里面。
stbl box也是一个容器,全称是sample table。stbl box里面包含对样本(sample)进行各种描述的子box。其中,样本(sample)是MP4文件数据的基本单位,一个样本就是表示音视频的一帧。stbl里面包含的几类主要的样本容器(sample box),分别是:
1、样本时间容器(stts box,time to sample box),存储了样本的时间信息。Stts box能很方便的根据时间标签(timestamp)找到对应的样本,或者获取某个样本对应的时间标签。
2、样本关键帧容器(stss box,sync sample box),存储了每个关键帧的样本ID,根据stss box能方便的找到当前帧最近的关键帧。
3、样本大小容器(stsz box,sample size box),stsz box可以描述每个样本的大小。
4、样本位置容器(stco box,chunk offset box),stco box描述了每个块(chunk)在文件中的绝对偏移位置。
在生成MP4文件的过程中,遇到异常情况导致进程终止时,一般来说,音视频的数据是在的。但是由于没有了参数,同时由于音视频在封装成MP4时会丢掉一些头信息,所以无法还原成原始的音视频数据。所以,本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、stco和stsz等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(BOX),还原原始的音视频数据。从而使得重要的资料不会流失。
如图1所示,在一个优选实施例中,本发明生成MP4文件包括如下流程:
步骤S11、由于每路媒体数据(即每路音视频数据)在生成MP4时都有对应的stss、stts、stco和stsz等box信息,因此,在生成MP4文件之前,对每路媒体数据分别创建4个信息记录文件和相应的记录指针,4个信息记录文件分别在各自记录指针的控制下进行信息读写操作,在生成MP4文件时保持并动态更新stss box、stts box、stco box和stsz box的信息。
步骤S12、输入需要生成MP4文件的媒体数据。
步骤S13、按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stss box、stts box、stco box和stsz box的信息分别记录至步骤S11创建的4个信息记录文件之中。
步骤S14、录制媒体数据完毕,生成MP4文件,且4个信息记录文件中分别记录了每帧媒体数据对应stss box、stts box、stco box和stsz box的信息。
若上述步骤S14在生成MP4文件的过程中,遇到异常情况导致进程终止时,导致MP4文件损坏,MP4文件无法正常读取,此时,可以结合4个信息记录文件,从MP4文件中读取已经录制的媒体数据,结合图2所示,具体包括如下步骤:
步骤S21、根据4个信息记录文件中每帧媒体数据对应stss box、stts box、stco box和stsz box的信息,从MP4文件中读出每帧媒体数据及对应的I帧。
先从用于记录stco box的信息记录文件中读取记录第1帧媒体数据在文件中的起始位置的信息、从用于记录stsz box的信息记录文件中读取记录第1帧媒体数据的大小信息(或数据长度信息)、从用于记录stts box的信息记录文件中读取记录第1帧媒体数据的时间信息、从用于记录stss box的信息记录文件中读取记录第1帧媒体数据对应的I帧。以此类推,可以得到MP4录制中断前所有帧的媒体数据。
步骤S22、根据读出每帧媒体数据及对应的I帧,还原得到录制时的媒体数据。
综上,本发明可以采用将部分重要的参数数据生成文件的方式,比如stss、stts、stco和stsz等容器(box),在生成音视频数据的同时,将参数保存下来,生成独立的文件。这样即使遇到异常终止的情况,也可以根据保存的参数容器(BOX),还原原始的音视频数据。从而使得重要的资料不会流失。另外,本发明生成MP4文件的方法简单、实现容易。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种MP4文件生成方法,其特征在于,所述方法包括步骤:
对每路媒体数据分别创建4个信息记录文件;
输入需要生成MP4文件的媒体数据;
按照MP4封装格式录制媒体数据,在每录制一帧媒体数据时,将该帧媒体数据对应的stss box、stts box、stco box和stsz box的信息分别记录至4个信息记录文件之中;
生成MP4文件,且4个信息记录文件中分别记录了每帧媒体数据对应stssbox、stts box、stco box和stsz box的信息。
2.根据权利要求1所述MP4文件生成方法,其特征在于,每个信息记录文件均由相应的记录指针控制进行信息读写操作。
3.根据权利要求1所述MP4文件生成方法,其特征在于,MP4封装格式包括:有且只有一个作为MP4格式标志的“ftyp”类型的box;有且只有一个包含所有媒体数据的宏观描述信息的“moov”类型的box;MP4文件的媒体数据包含在“mdat”类型的box。
4.根据权利要求3所述MP4文件生成方法,其特征在于,“moov”类型的box包括2个子box:用于记录创建时间、修改时间、时间度量标尺、可播放时长信息的mvhd box;具有一系列子box用于描述每个媒体轨道的具体信息的trak box。
5.根据权利要求4所述MP4文件生成方法,其特征在于,trak box具体包含:表述本视频轨或音频轨的基本信息的tkhd box,描述了编辑片段信息用作文件定位的edts box,以及包含mdhd、hdlr和minf三类子box的mdia box;其中,minfbox具有vmhd、dinf和stbl这三个子box。
6.根据权利要求5所述MP4文件生成方法,其特征在于,stbl box里面包含对媒体数据的样本进行各种描述的子box,其中包括stss box、stts box、stco box和stsz box。
7.一种MP4文件读取方法,其特征在于,所述方法包括步骤:
根据4个信息记录文件中每帧媒体数据对应stss box、stts box、stco box和stsz box的信息,从MP4文件中读出每帧媒体数据及对应的I帧;
根据读出每帧媒体数据及对应的I帧,得到生成MP4文件之前的媒体数据;
其中,MP4文件是采用权利要求1-6任何一项所述方法所生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210229701.3A CN102723090B (zh) | 2012-07-04 | 2012-07-04 | Mp4文件读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210229701.3A CN102723090B (zh) | 2012-07-04 | 2012-07-04 | Mp4文件读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102723090A true CN102723090A (zh) | 2012-10-10 |
CN102723090B CN102723090B (zh) | 2016-08-24 |
Family
ID=46948828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210229701.3A Active CN102723090B (zh) | 2012-07-04 | 2012-07-04 | Mp4文件读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102723090B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747065A (zh) * | 2013-12-27 | 2014-04-23 | 河海大学 | 客户端http检索全索引容器格式媒体资源时间片段的方法 |
CN109743614A (zh) * | 2019-01-03 | 2019-05-10 | 北京大米科技有限公司 | 一种数据存储的方法、装置及电子设备 |
CN109936715A (zh) * | 2017-12-19 | 2019-06-25 | 华为技术有限公司 | 一种mp4文件的处理方法及其相关设备 |
CN112507148A (zh) * | 2020-12-16 | 2021-03-16 | 北京华宇信息技术有限公司 | 媒体文件自动合成方法及装置 |
CN114173075A (zh) * | 2021-10-22 | 2022-03-11 | 广州市奥威亚电子科技有限公司 | 用于录制的mp4文件保存方法、装置、电子设备及存储介质 |
CN114374875A (zh) * | 2021-12-31 | 2022-04-19 | 浙江大华技术股份有限公司 | 一种mp4文件的录制方法、装置及可读存储介质 |
CN114390319A (zh) * | 2021-10-22 | 2022-04-22 | 广州市奥威亚电子科技有限公司 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
CN114374875B (zh) * | 2021-12-31 | 2024-05-28 | 浙江大华技术股份有限公司 | 一种mp4文件的录制方法、装置及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003114845A (ja) * | 2001-10-03 | 2003-04-18 | Hitachi Ltd | メディア変換方法およびメディア変換装置 |
CN1868210A (zh) * | 2003-10-10 | 2006-11-22 | 索尼株式会社 | 文件再现装置、文件再现方法、文件再现方法程序和用于记录文件再现方法程序的记录介质 |
CN102227773A (zh) * | 2008-11-26 | 2011-10-26 | 韩国科亚电子股份有限公司 | 多媒体数据记录 |
-
2012
- 2012-07-04 CN CN201210229701.3A patent/CN102723090B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003114845A (ja) * | 2001-10-03 | 2003-04-18 | Hitachi Ltd | メディア変換方法およびメディア変換装置 |
CN1868210A (zh) * | 2003-10-10 | 2006-11-22 | 索尼株式会社 | 文件再现装置、文件再现方法、文件再现方法程序和用于记录文件再现方法程序的记录介质 |
CN102227773A (zh) * | 2008-11-26 | 2011-10-26 | 韩国科亚电子股份有限公司 | 多媒体数据记录 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103747065A (zh) * | 2013-12-27 | 2014-04-23 | 河海大学 | 客户端http检索全索引容器格式媒体资源时间片段的方法 |
CN109936715A (zh) * | 2017-12-19 | 2019-06-25 | 华为技术有限公司 | 一种mp4文件的处理方法及其相关设备 |
US11100956B2 (en) | 2017-12-19 | 2021-08-24 | Huawei Technologies Co., Ltd. | MP4 file processing method and related device |
CN109936715B (zh) * | 2017-12-19 | 2021-09-03 | 华为技术有限公司 | 一种mp4文件的处理方法及其相关设备 |
CN109743614A (zh) * | 2019-01-03 | 2019-05-10 | 北京大米科技有限公司 | 一种数据存储的方法、装置及电子设备 |
CN112507148A (zh) * | 2020-12-16 | 2021-03-16 | 北京华宇信息技术有限公司 | 媒体文件自动合成方法及装置 |
CN114173075A (zh) * | 2021-10-22 | 2022-03-11 | 广州市奥威亚电子科技有限公司 | 用于录制的mp4文件保存方法、装置、电子设备及存储介质 |
CN114390319A (zh) * | 2021-10-22 | 2022-04-22 | 广州市奥威亚电子科技有限公司 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
CN114390319B (zh) * | 2021-10-22 | 2023-11-03 | 广州市奥威亚电子科技有限公司 | Mp4文件的读取下载方法、装置、电子设备及存储介质 |
CN114173075B (zh) * | 2021-10-22 | 2024-01-30 | 广州市奥威亚电子科技有限公司 | 用于录制的mp4文件保存方法、装置、电子设备及存储介质 |
CN114374875A (zh) * | 2021-12-31 | 2022-04-19 | 浙江大华技术股份有限公司 | 一种mp4文件的录制方法、装置及可读存储介质 |
CN114374875B (zh) * | 2021-12-31 | 2024-05-28 | 浙江大华技术股份有限公司 | 一种mp4文件的录制方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102723090B (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102723090A (zh) | Mp4文件生成及读取方法 | |
CN101682718B (zh) | 基于iso基本媒体文件格式的mpeg-2传输流的存储/回放方法和设备 | |
CN105103540B (zh) | 文件生成方法、文件生成装置及记录介质 | |
JP4481889B2 (ja) | データ記録装置及びその方法、プログラム、記録媒体 | |
US20030188182A1 (en) | Data structure of multimedia file format, encrypting method and device thereof, and decrypting method and device thereof | |
CN111063376B (zh) | 一种mp4修复中音视频同步的方法、终端设备和存储介质 | |
MX2010002097A (es) | Medio de grabacion, dispositivo de reproduccion, integracion a gran escala de sistema, metodo de reproduccion, lentes y dispositivo visual para imagenes 3d. | |
RU2016105434A (ru) | Транспортировка hdr метаданных | |
CN101803396A (zh) | 记录媒体、再现装置和集成电路 | |
CN102740038A (zh) | 半导体集成电路 | |
CN102665103A (zh) | 一种适用于流媒体服务的音频视频封装方法 | |
CN104602105B (zh) | 视频文件的播放方法及用户设备 | |
TWI584636B (zh) | 藉由減少視訊圖框來降低在網路上傳輸視訊所需之位元率的方法 | |
EP3713243A1 (en) | Mp4 file processing method and related device therefor | |
KR20110134857A (ko) | 프래그먼트 기반의 멀티미디어 스트리밍 서비스 제공 방법과 그 장치, 그리고 프래그먼트 기반의 멀티미디어 스트리밍 서비스 수신 방법과 그 장치 | |
CN102118539B (zh) | 一种多媒体播放终端及其文件拖动播放方法和装置 | |
US20070250323A1 (en) | Apparatus and Method for Encoding and Decoding Plurality of Digital Data Sets | |
WO2020093931A1 (zh) | 字幕数据处理方法、装置、设备和计算机存储介质 | |
AU2008300895A1 (en) | Apparatus and method for storing and reading a file having a media data container and a metadata container | |
CN109195012A (zh) | 一种基于对象存储分片转码/合成闪拼成mp4文件的方法 | |
KR20140062437A (ko) | 프리셋을 이용한 객체기반 오디오 시스템, 객체기반 오디오 제공 방법 및 객체기반 오디오 재생 방법 | |
US20110069934A1 (en) | Apparatus and method for providing object based audio file, and apparatus and method for playing back object based audio file | |
CN103796047A (zh) | 一种视音频数据的封装方法及封装装置 | |
CN103428527A (zh) | 数据源实时媒体流转换方法和续点切换播放方法 | |
CN102682016A (zh) | 一种支持mov/3gp/mp4文件的索引系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |