CN114007112B - 一种针对MP4视频文件中mdat box数据错误的修复方法 - Google Patents
一种针对MP4视频文件中mdat box数据错误的修复方法 Download PDFInfo
- Publication number
- CN114007112B CN114007112B CN202111440605.9A CN202111440605A CN114007112B CN 114007112 B CN114007112 B CN 114007112B CN 202111440605 A CN202111440605 A CN 202111440605A CN 114007112 B CN114007112 B CN 114007112B
- Authority
- CN
- China
- Prior art keywords
- video file
- mdatbox
- box
- video
- audio
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
- H04N21/26233—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving content or additional data duration or size, e.g. length of a movie, size of an executable file
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26208—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
- H04N21/26241—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving the time of distribution, e.g. the best time of the day for inserting an advertisement or airing a children program
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Management Or Editing Of Information On Record Carriers (AREA)
Abstract
本发明公开了一种针对MP4视频文件中mdat box数据错误的修复方法,S100:加载视频文件,判断当前视频文件是否满足MP4视频文件的存储结构,如果是,执行步骤S200,否则,结束流程;S200:解析并判断当前视频文件是否为损坏文件,如果是,执行步骤S300,否则,结束流程;S300:解析当前视频文件包含的moov box及嵌套的各个类型的box,确定mdat box中音视频的编解码类型;S400:依据音视频编解码类型,解析当前视频文件的mdat box中包含的音视频;S500:根据解析所获取的moov box的内容及mdat box的内容,判断moov box描述的mdat box所包含的完整音视频信息是否正确,如果是,执行步骤S700,否则,执行步骤S600;S600:根据moov box修复mdat box;S700:将修复后的MP4视频文件重组并生成修复后的MP4视频文件。
Description
技术领域
本发明属于电子取证及数据恢复领域,涉及一种MP4视频文件的修复方法,尤其涉及一种针对MP4视频文件中mdat box数据错误的修复方法。
背景技术
MP4作为一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是媒体格式的一种实现。它可以在其中嵌入任何形式的数据、各种编码的视频、音频等。不过我们常见的大部分MP4文件中存放的是AVC(H.264)或MPEG-4(Part 2)编码的视频和AAC编码的音频。MP4格式的官方文件后缀名是“.mp4”,还有其他的以MP4为基础进行的扩展或者套用MP4容器格式的文件后缀名,包括:MOV,3GP,3G2等。
MP4作为一种最常被使用的视频文件格式,运用范围非常的广泛。但同时存在电子数据易损坏的这一特性。因此,针对此类文件的修复在日常工作生活中的运用就显得尤为重要。
在MP4视频文件中,视频数据由若干个“box”组成,且box内还可嵌套若干个box,而这些box之间存在相应的关联性。现有技术中,尚无一种通过各种类型box的特性以及box之间的关联性来修复MP4视频文件的方法,特别是当MP4视频文件中mdat box出现数据错误时,现有技术中尚无针对该技术问题的解决方法。
发明内容
针对现有技术的技术问题,本发明提供了一种针对MP4视频文件中mdat box数据错误的修复方法:
利用各个box之间的关联性和不同类型box的特性,实现MP4视频文件的修复。通过此种方法修复后生成的视频文件与源文件的格式相同,不会改变其原本的文件数据存储结构。即,在导致源视频无法正常播放的损坏部分,按照MP4视频文件的固有存储结构特性构造视频数据,从而达到MP4视频能够正常播放的目的。通过此种方法实现的MP4视频文件修复,能够最大程度地保证源视频数据的完整性。
名词解释:
sample:对视频数据来说,video sample即为一帧视频,或一组连续视频帧;对音频数据来说,audio sample即为一段连续的压缩音频,它们统称sample。
track:表示一些sample的集合。对媒体数据来说,track表示一个视频或音频序列。
chunk:组块,即,一个track的几个sample组成的单元。换言之,其由若干个sample数据组成。
MP4视频文件所包括的主要的box类型名称、层级关系及说明请参考如下表一:
表一:
MP4视频文件所包括的更为详细的box类型名称、层级关系及说明请参考如下表二:
表二:
本发明所提供的方法包括以下步骤:
S100:加载视频文件,判断当前视频文件是否满足MP4视频文件的存储结构,如果是,执行步骤S200,否则,结束流程;
S200:解析并判断当前视频文件是否为损坏文件,如果是,执行步骤S300,否则,结束流程;
S300:解析当前视频文件包含的moov box,并解析moov box中嵌套的各个类型的box,确定moov box所描述的mdat box中音视频的编解码类型;
S400:依据音视频编解码类型,解析当前视频文件的mdat box中包含的音视频;
S500:根据解析所获取的moov box的内容及mdat box的内容,判断moov box描述的mdat box所包含的完整音视频信息是否正确,如果是,执行步骤S700,否则,执行步骤S600;
S600:如果moov box及mdat box对应关联关系不正确,则根据moov box修复mdatbox;
S700:将修复后的数据按照MP4视频文件结构进行重组并生成修复后的MP4视频文件。
优选地,步骤S100包括以下步骤:
S101:加载并遍历当前视频文件;
S102:根据MP4视频文件结构的标识,判断当前视频文件是否同时满足下述两个条件,如果是,表示当前视频文件为MP4视频文件的存储结构,执行步骤S200,否则,结束流程;
条件1:当前视频文件是否同时包含下述标识的box:
ftyp、moov、mvhd、trak、tkhd、mdia、mdhd、hdlr、minf、vmhd、smhd、dinf、dref、stbl、stsd、stts、stsc、stco;
条件2:当前视频文件结构的标识符合MP4视频文件的box的层级结构,且各个box符合各自类型的数据结构。
优选地,所述步骤S200中,解析并判断当前视频文件是否为损坏文件包括以下步骤:
是否同时满足下述4个条件:
条件1:当前视频文件的首个box为ftyp,ftyp在当前视频文件中储存的起始地址为0x00;
条件2:moov中嵌套stsz和stco两种box,其中,stsz用以记录mdat box音视频中sample的字节长度,stco用以记录mdat box音视频中chunk的偏移地址;
条件3:moov box中嵌套的box必须满足MP4视频文件的box的层级结构;
条件4:根据moov box中嵌套的各个类型的box的标识不同,所包含的数据内容也各不相同并分别各自满足相应类型的数据结构,且各自的数据不为全零。
优选地,步骤S300包括以下步骤:
S301:按照MP4视频文件的box的层级结构中moov box嵌套的各个box的层级关系,遍历各个box的数据;
S302:通过moov box中trak box所包含的stsd描述的数据编解码,确定mdat box中音视频数据的编解码格式。
优选地,步骤S300包括以下步骤:
S301:按照MP4视频文件的box的层级结构中moov box嵌套的各个box的层级关系,遍历各个box的数据;
S302:通过moov box中trak box所包含的stsd描述的数据编解码,确定mdat box中音视频数据的编解码格式。
优选地,步骤S400包括以下步骤:
根据所获取的音视频的编解码格式,确定mdat box中音视频sample的结构,并获取mdat box中所有音视频sample,记录各个音视频sample的字节长度及各自相对于mdatbox起始地址的偏移地址。
优选地,步骤S500包括以下步骤:
S501:在moov box的音视频的trak box所记录的stco box中,获取首个chunk的偏移地址;
S502:获取当前视频文件中mdat box相对于当前视频文件起始地址以及步骤400中所获取的首个sample相对于mdat box起始地址的偏移地址,判断当前视频文件中mdatbox相对于当前视频文件起始地址加首个sample相对于mdat box起始地址的偏移地址的和,是否等于首个chunk的偏移地址,如果是,表示moov box描述的mdat box所包含的完整音视频信息正确,执行步骤S700,否则,执行步骤S503;
S503:判断当前视频文件中mdat box相对于当前视频文件起始地址加首个sample相对于mdat box起始地址的偏移地址的和,是否大于首个chunk的偏移地址,如果是,执行步骤S504,否则,执行步骤S506;
S504:确定mdat box头结构的字节长度:如果box大小的值为1,则头结构的字节长度为0x10,否则为0x08;
S505:判断首个sample相对于mdat box起始地址的偏移地址减mdat box头结构的字节长度的差,是否等于当前视频文件中mdat box相对于当前视频文件起始地址,如果是,表示mdat box中完整音视频数据信息在moov box中描述的错误类型为内部数据错误,执行步骤S602,否则,表示mdat box中完整音视频数据信息在moov box中描述的错误类型为偏移地址错误,执行步骤S601;
S506:标记moov box描述的mdat box所包含的完整音视频信息的错误类型为偏移地址错误,执行步骤S601。
优选地,步骤S600包括以下步骤:
S601:首个sample相对于mdat box起始地址的偏移地址减mdat box头结构的字节长度的差,作为当前视频文件中mdat box相对于当前视频文件起始地址,执行步骤S700;
S602:遍历moov box中的音视频trak box并读取stsz box的值,其表示各个sample的字节长度,与mdat box中音视频sample的字节长度各自对比,在moov box中查找对比后字节长度相等的sample,且当前sample之后连续N个sample的字节长度依次与stszbox中对应的字节长度分别相等,记录字节长度相等的sample在stsz box中的顺序,并记录对应sample的位置信息描述S_sam,其中,N为不小于3的自然数;
S603:遍历moov box中音视频trak box,并读取stsc box的值,其表示sample与chunk的关联信息,所述关联信息包含各个chunk中sample的个数;
根据位置信息描述所属的chunk,获取stsc box中位置信息描述对应的chunk的序号;
S604:根据chunk的序号,在stco box中读取chunk的序号所对应的chunk偏移值;
S605:根据chunk序号对应sample在mdat box中实际偏移地址值,以及当前视频文件中mdat box相对于当前视频文件起始地址,计算需填零字节的字节长度为:chunk的序号所对应的chunk偏移值减当前视频文件中mdat box相对于当前视频文件起始地址的差,再减实际偏移地址值;
S606:根据所计算的填零字节的字节长度,将moov box中所查找的字节长度相等的sample前的字节填零,完成对mdat box内部数据错误的修复。
优选地,所述实际偏移地址值的获取方法包括:
根据chunk对应序号,在stsz中找到当前chunk的首个sample的字节长度;
根据该字节长度,在步骤S400中查找与该字节长度相等的sample;
读取步骤S400中与该字节长度相等的sample在mdat box中的偏移地址,作为实际偏移地址值。
优选地,步骤S700包括以下步骤:
S701:新建MP4视频文件,用以存放修复后的box;
S702:将修复后的ftyp box、mdat box及moov box依次写入新建MP4视频文件;
S703:判断新建MP4视频文件中mdat box与moov box之间是否存在空余空间,如果是,执行步骤S704,否则,执行步骤S705;
S704:采用free box填充moov box与mdat box之间的空余空间;
S705:输出修复后的MP4视频文件并检测是否可以正常播放。
本发明具有以下有益效果:针对MP4视频文件中mdat box数据错误的修复,确保文件内容能够正常播放,并且播放画面与源文件保持一致,并解决了现有技术中尚无一种针对MP4视频文件中mdat box数据错误的修复方法的技术问题。
附图说明
图1为本发明所提供的方法的总流程图;
图2为本发明所提供的方法中判断moov box描述的mdat box所包含的完整音视频信息是否正确及判断mdat box中完整音视频数据信息在moov box中描述的错误类型的具体流程图;
图3为本发明所提供的方法中根据moov box修复mdat box的具体流程图。
具体实施方式
图1示出了本发明所提供的方法的总流程图。如图1所示,本发明的方法包括以下步骤:
S100:加载视频文件,判断当前视频文件是否满足MP4视频文件的存储结构,如果是,执行步骤S200,否则,结束流程;步骤S100包括以下步骤:
S101:加载并遍历当前视频文件;
S102:根据MP4视频文件结构的标识,判断当前视频文件是否同时满足下述两个条件,如果是,表示当前视频文件为MP4视频文件的存储结构,执行步骤S200,否则,结束流程;
条件1:当前视频文件是否同时包含下述标识的box:
ftyp、moov、mvhd、trak、tkhd、mdia、mdhd、hdlr、minf、vmhd、smhd、dinf、dref、stbl、stsd、stts、stsc、stco;
条件2:当前视频文件结构的标识符合MP4视频文件的box的层级结构,且各个box符合各自类型的数据结构。其中,各个box符合各自类型的数据结构属于公知常识,此处不再赘述。此外,box的层级结构也为公知常识,如表一及表二所示,此处也不再赘述。
S200:解析并判断当前视频文件是否为损坏文件,如果是,执行步骤S300,否则,结束流程;
步骤S200中,解析并判断当前视频文件是否为损坏文件包括以下步骤:
是否同时满足下述4个条件,如果是,则为损坏文件:
条件1:当前视频文件的首个box为ftyp,ftyp在当前视频文件中储存的起始地址为0x00;
条件2:moov中嵌套stsz和stco两种box,其中,stsz用以记录mdat box音视频中sample的字节长度,stco用以记录mdat box音视频中chunk的偏移地址;
条件3:moov box中嵌套的box必须满足MP4视频文件的box的层级结构;
条件4:根据moov box中嵌套的各个类型的box的标识不同,所包含的数据内容也各不相同并分别各自满足相应类型的数据结构,且各自的数据不为全零。
S300:解析当前视频文件包含的moov box,并解析moov box中嵌套的各个类型的box,确定moov box所描述的mdat box中音视频的编解码类型;
步骤S300包括以下步骤:
S301:按照MP4视频文件的box的层级结构中moov box嵌套的各个box的层级关系,遍历各个box的数据;
S302:通过moov box中trak box所包含的stsd描述的数据编解码,确定mdat box中音视频数据的编解码格式。
S400:依据音视频编解码类型,解析当前视频文件的mdat box中包含的音视频;
步骤S400包括以下步骤:
根据所获取的音视频的编解码格式,确定mdat box中音视频sample的结构,并获取mdat box中所有音视频sample,记录各个音视频sample的字节长度及各自相对于mdatbox起始地址的偏移地址。
S500:根据解析所获取的moov box的内容及mdat box的内容,判断moov box描述的mdat box所包含的完整音视频信息是否正确,如果是,执行步骤S700,否则,执行步骤S600;
图2示出了本发明所提供的方法中判断moov box描述的mdat box所包含的完整音视频信息是否正确及判断mdat box中完整音视频数据信息在moov box中描述的错误类型的具体流程图。如图2所示,步骤S500包括以下步骤:
S501:在moov box的音视频的trak box所记录的stco box中,获取首个chunk的偏移地址c;
S502:获取当前视频文件中mdat box相对于当前视频文件起始地址m以及步骤400中所获取的首个sample相对于mdat box起始地址的偏移地址s,判断m+s是否等于c,如果是,表示moov box描述的mdat box所包含的完整音视频信息正确,执行步骤S700,否则,执行步骤S503;
S503:判断m+s是否大于c,如果是,执行步骤S504,否则,执行步骤S506;
S504:确定mdat box头结构的字节长度h_len:如果box size的值为1,则头结构的字节长度h_len为0x10,否则为0x08;
S505:设首个sample相对于mdat box起始地址的偏移地址为s,判断s减h_len的差是否等于当前视频文件中mdat box相对于当前视频文件起始地址m,如果是,表示mdat box中完整音视频数据信息在moov box中描述的错误类型为内部数据错误,执行步骤S602,否则,表示mdat box中完整音视频数据信息在moov box中描述的错误类型为偏移地址错误,执行步骤S601;
S506:标记moov box描述的mdat box所包含的完整音视频信息的错误类型为偏移地址错误,执行步骤S601。
S600:如果moov box及mdat box对应关联关系不正确,则根据moov box修复mdatbox;
图3示出了本发明所提供的方法中则根据moov box修复mdat box的具体流程图。如图3所示,步骤S600包括以下步骤:
S601:首个sample相对于mdat box起始地址的偏移地址s减mdat box头结构的字节长度h_len的差,作为当前视频文件中mdat box相对于当前视频文件起始地址m,执行步骤S700;
S602:遍历moov box中的音视频trak box并读取stsz box的值,其表示各个sample的字节长度,与mdat box中音视频sample的字节长度各自对比,在moov box中查找对比后字节长度相等的sample,且当前sample之后连续3个sample的字节长度依次与stszbox中对应的字节长度分别相等,记录字节长度相等的sample在stsz box中的顺序,并记录对应sample的位置信息描述S_sam;
例如,遍历moov box中的音视频trak box并读取stsz box中当前的值为0x16,表示当前sample的字节长度为0x16,读取其后连续3个sample的字节长度分别为0x08、0x32及0x64。与mdat box中音视频sample的字节长度对比,在moov box中查找到字节长度也为0x16的sample,并且,读取其后连续3个sample的字节长度也分别为0x08、0x32及0x64,则记录字节长度为0x16的sample在stsz box中的顺序,并记录sample的位置信息描述S_sam。应理解,其后连续sample的个数不受3个的限制,个数约大,结果越精确。
S603:遍历moov box中音视频trak box,并读取stsc box的值,其表示sample与chunk的关联信息,关联信息包含各个chunk中sample的个数;
根据位置信息描述S_sam所属的chunk,获取stsc box中位置信息描述S_sam对应的chunk的序号C_order;
S604:根据chunk的序号C_order,在stco box中读取chunk的序号C_order所对应的chunk偏移值c_offset;
S605:根据chunk序号C_order对应sample在mdat box中实际偏移地址值s_offset,以及当前视频文件中mdat box相对于当前视频文件起始地址m,计算需填零字节的字节长度=c_offset-m-s_offset;
进一步地,实际偏移地址值s_offset的获取方法包括:
根据chunk对应序号C_order,在stsz中找到当前chunk的首个sample的字节长度;
根据该字节长度,在步骤S400中查找与该字节长度相等的sample;
读取步骤S400中与该字节长度相等的sample在mdat box中的偏移地址,作为实际偏移地址值s_offset。
S606:根据所计算的填零字节的字节长度,将moov box中所查找的字节长度相等的sample前的字节填零,完成对mdat box内部数据错误的修复。
S700:将修复后的数据按照MP4视频文件结构进行重组并生成修复后的MP4视频文件。步骤S700包括以下步骤:
S701:新建MP4视频文件,用以存放修复后的box;
S702:将修复后的ftyp box、mdat box及moov box依次写入新建MP4视频文件;
S703:判断新建MP4视频文件中mdat box与moov box之间是否存在空余空间,如果是,执行步骤S704,否则,执行步骤S705;
S704:采用free box填充moov box与mdat box之间的空余空间;其中,free box为公知技术,此处不再赘述。
S705:输出修复后的MP4视频文件并检测是否可以正常播放。
通过本发明所提供的上述方法,确保修复后的MP4视频文件能够正常播放,并且播放画面与源文件保持一致,解决了现有技术中尚无一种针对MP4视频文件中mdatbox数据错误的修复方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于包括以下步骤:
S100:加载视频文件,判断当前视频文件是否满足MP4视频文件的存储结构,如果是,执行步骤S200,否则,结束流程;
S200:解析并判断当前视频文件是否为损坏文件,如果是,执行步骤S300,否则,结束流程;
S300:解析当前视频文件包含的moovbox,并解析moovbox中嵌套的各个类型的box,确定moovbox所描述的mdatbox中音视频的编解码类型;
S400:依据音视频编解码类型,解析当前视频文件的mdatbox中包含的音视频;
S500:根据解析所获取的moovbox的内容及mdatbox的内容,判断moov box描述的mdatbox所包含的完整音视频信息是否正确,如果是,执行步骤S700,否则,执行步骤S600;
S600:如果moovbox及mdatbox对应关联关系不正确,则根据moovbox修复mdatbox,步骤S600包括以下步骤:
S601:首个sample相对于mdatbox起始地址的偏移地址减mdatbox头结构的字节长度的差,作为当前视频文件中mdatbox相对于当前视频文件起始地址,执行步骤S700;
S602:遍历moovbox中的音视频trakbox并读取stszbox的值,其表示各个sample的字节长度,与mdatbox中音视频sample的字节长度各自对比,在moovbox中查找对比后字节长度相等的sample,且当前sample之后连续N个sample的字节长度依次与stszbox中对应的字节长度分别相等,记录字节长度相等的sample在stszbox中的顺序,并记录对应sample的位置信息描述,其中,N为不小于3的自然数;
S603:遍历moovbox中音视频trakbox,并读取stscbox的值,其表示sample与chunk的关联信息,所述关联信息包含各个chunk中sample的个数;
根据位置信息描述所属的chunk,获取stscbox中位置信息描述对应的chunk的序号;
S604:根据chunk的序号,在stcobox中读取chunk的序号所对应的chunk偏移值;
S605:根据chunk序号对应sample在mdatbox中实际偏移地址值,以及当前视频文件中mdatbox相对于当前视频文件起始地址,计算需填零字节的字节长度为:chunk的序号所对应的chunk偏移值减当前视频文件中mdatbox相对于当前视频文件起始地址的差,再减实际偏移地址值;
S606:根据所计算的填零字节的字节长度,将moovbox中所查找的字节长度相等的sample前的字节填零,完成对mdatbox内部数据错误的修复;
S700:将修复后的数据按照MP4视频文件结构进行重组并生成修复后的MP4视频文件。
2.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,步骤S100包括以下步骤:
S101:加载并遍历当前视频文件;
S102:根据MP4视频文件结构的标识,判断当前视频文件是否同时满足下述两个条件,如果是,表示当前视频文件为MP4视频文件的存储结构,执行步骤S200,否则,结束流程;
条件1:当前视频文件是否同时包含下述标识的box:
ftyp、moov、mvhd、trak、tkhd、mdia、mdhd、hdlr、minf、vmhd、smhd、dinf、dref、stbl、stsd、stts、stsc、stco;
条件2:当前视频文件结构的标识符合MP4视频文件的box的层次结构,且各个box符合各自类型的数据结构。
3.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于:所述步骤S200中,解析并判断当前视频文件是否为损坏文件包括以下步骤:
是否同时满足下述4个条件:
条件1:当前视频文件的首个box为ftyp,ftyp在当前视频文件中储存的起始地址为0x00;
条件2:moov中嵌套stsz和stco两种box,其中,stsz用以记录mdat box音视频中sample的字节长度,stco用以记录mdatbox音视频中chunk的偏移地址;
条件3:moovbox中嵌套的box必须满足MP4视频文件的box的层次结构;
条件4:根据moovbox中嵌套的各个类型的box的标识不同,所包含的数据内容也各不相同并分别各自满足相应类型的数据结构,且各自的数据不为全零。
4.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,步骤S300包括以下步骤:
S301:按照MP4视频文件的box的层次结构中moovbox嵌套的各个box的层次关系,遍历各个box的数据;
S302:通过moovbox中trakbox所包含的stsd描述的数据编解码,确定mdatbox中音视频数据的编解码格式。
5.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,步骤S400包括以下步骤:
根据所获取的音视频的编解码格式,确定mdatbox中音视频sample的结构,并获取mdatbox中所有音视频sample,记录各个音视频sample的字节长度及各自相对于mdatbox起始地址的偏移地址。
6.根据权利要求5所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,步骤S500包括以下步骤:
S501:在moovbox的音视频的trakbox所记录的stcobox中,获取首个chunk的偏移地址;
S502:获取当前视频文件中mdatbox相对于当前视频文件起始地址以及步骤400中所获取的首个sample相对于mdatbox起始地址的偏移地址,判断当前视频文件中mdatbox相对于当前视频文件起始地址加首个sample相对于mdatbox起始地址的偏移地址的和,是否等于首个chunk的偏移地址,如果是,表示moovbox描述的mdatbox所包含的完整音视频信息正确,执行步骤S700,否则,执行步骤S503;
S503:判断当前视频文件中mdatbox相对于当前视频文件起始地址加首个sample相对于mdatbox起始地址的偏移地址的和,是否大于首个chunk的偏移地址,如果是,执行步骤S504,否则,执行步骤S506;
S504:确定mdatbox头结构的字节长度:如果box大小的值为1,则头结构的字节长度为0x10,否则为0x08;
S505:判断首个sample相对于mdatbox起始地址的偏移地址减mdatbox头结构的字节长度的差,是否等于当前视频文件中mdatbox相对于当前视频文件起始地址,如果是,表示mdatbox中完整音视频数据信息在moovbox中描述的错误类型为内部数据错误,执行步骤S602,否则,表示mdatbox中完整音视频数据信息在moovbox中描述的错误类型为偏移地址错误,执行步骤S601;
S506:标记moovbox描述的mdatbox所包含的完整音视频信息的错误类型为偏移地址错误,执行步骤S601。
7.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,所述实际偏移地址值的获取方法包括:
根据chunk对应序号,在stsz中找到当前chunk的首个sample的字节长度;
根据该字节长度,在步骤S400中查找与该字节长度相等的sample;
读取步骤S400中与该字节长度相等的sample在mdatbox中的偏移地址,作为实际偏移地址值。
8.根据权利要求1所述的一种针对MP4视频文件中mdatbox数据错误的修复方法,其特征在于,步骤S700包括以下步骤:
S701:新建MP4视频文件,用以存放修复后的box;
S702:将修复后的ftypbox、mdatbox及moovbox依次写入新建MP4视频文件;
S703:判断新建MP4视频文件中mdatbox与moovbox之间是否存在空余空间,如果是,执行步骤S704,否则,执行步骤S705;
S704:采用freebox填充moovbox与mdatbox之间的空余空间;
S705:输出修复后的MP4视频文件并检测是否可以正常播放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111440605.9A CN114007112B (zh) | 2021-11-30 | 2021-11-30 | 一种针对MP4视频文件中mdat box数据错误的修复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111440605.9A CN114007112B (zh) | 2021-11-30 | 2021-11-30 | 一种针对MP4视频文件中mdat box数据错误的修复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114007112A CN114007112A (zh) | 2022-02-01 |
CN114007112B true CN114007112B (zh) | 2023-06-02 |
Family
ID=79930988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111440605.9A Active CN114007112B (zh) | 2021-11-30 | 2021-11-30 | 一种针对MP4视频文件中mdat box数据错误的修复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114007112B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900689B (zh) * | 2022-03-24 | 2023-05-26 | 杭州叙简未兰电子有限公司 | 一种执法记录仪录像存储测试方法 |
CN116489458B (zh) * | 2023-06-26 | 2023-09-01 | 深圳麦风科技有限公司 | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111063376A (zh) * | 2019-12-13 | 2020-04-24 | 厦门市美亚柏科信息股份有限公司 | 一种mp4修复中音视频同步的方法、终端设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011142585A (ja) * | 2010-01-08 | 2011-07-21 | Sony Corp | 画像処理装置、情報記録媒体、および画像処理方法、並びにプログラム |
CN109426589B (zh) * | 2017-08-30 | 2021-09-07 | 华为技术有限公司 | 一种文件修复方法及装置 |
CN108093299B (zh) * | 2017-12-22 | 2020-08-04 | 厦门市美亚柏科信息股份有限公司 | Mp4损坏文件的修复方法及存储介质 |
CN110740391B (zh) * | 2019-10-31 | 2021-10-26 | 四川效率源信息安全技术股份有限公司 | 一种修复mp4损坏文件的方法 |
CN110910916B (zh) * | 2019-11-29 | 2021-08-03 | 四川效率源信息安全技术股份有限公司 | 一种基于文件结构的监控视频的雕复方法 |
-
2021
- 2021-11-30 CN CN202111440605.9A patent/CN114007112B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111063376A (zh) * | 2019-12-13 | 2020-04-24 | 厦门市美亚柏科信息股份有限公司 | 一种mp4修复中音视频同步的方法、终端设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114007112A (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114007112B (zh) | 一种针对MP4视频文件中mdat box数据错误的修复方法 | |
US20080256431A1 (en) | Apparatus and Method for Generating a Data File or for Reading a Data File | |
US8010566B2 (en) | Extended multimedia file structure and multimedia file producting method and multimedia file executing method | |
US7337297B2 (en) | Method and apparatus for recording data with pseudo-merge | |
CN100501725C (zh) | 存取元数据的简化方法和装置 | |
US6915012B2 (en) | System and method of storing data in JPEG files | |
US10469915B2 (en) | Apparatus and method for delivering and receiving multimedia data in hybrid network | |
US20150052159A1 (en) | File name display method and system, and computer storage medium | |
CN110910916B (zh) | 一种基于文件结构的监控视频的雕复方法 | |
CN110740391B (zh) | 一种修复mp4损坏文件的方法 | |
CN1643514A (zh) | 使用来自不同源的元数据的方法和设备 | |
US10446188B2 (en) | Method and apparatus for low latency non-linear media editing using file-based inserts into finalized digital multimedia files | |
WO2014163663A1 (en) | Syntax-aware manipulation of media files in a container format | |
CN100563319C (zh) | 信息处理设备和方法 | |
JP7391963B2 (ja) | コンテナファイルフォーマットで情報をシグナリングするための装置及び方法 | |
US20050232498A1 (en) | System and method of storing data in JPEG files | |
JP5351972B2 (ja) | マルチメディアデータレコーディング | |
CN112929686B (zh) | 线上实时回放录制视频的方法及装置 | |
US8131785B1 (en) | Free space management for hierarchical data document | |
Wilkinson et al. | The material exchange format (mxf) and its application | |
CN113555040B (zh) | 多媒体文件中moov容器的写入方法和计算机可读存储介质 | |
CN116489458B (zh) | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 | |
KR20200061559A (ko) | Mpeg-4 표준 규격 동영상에서의 청크 간 부가데이터 삽입 방법 | |
CN112416873A (zh) | 视频碎片文件的恢复方法、装置、计算机设备及存储介质 | |
KR101404245B1 (ko) | 선택적으로 컨텐츠를 인덱싱하기 위한 인덱싱 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |