CN114007112B - 一种针对MP4视频文件中mdat box数据错误的修复方法 - Google Patents

一种针对MP4视频文件中mdat box数据错误的修复方法 Download PDF

Info

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
Application number
CN202111440605.9A
Other languages
English (en)
Other versions
CN114007112A (zh
Inventor
朱星海
梁效宁
何丽萍
许超明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xly Salvationdata Technology Inc
Original Assignee
Xly Salvationdata Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xly Salvationdata Technology Inc filed Critical Xly Salvationdata Technology Inc
Priority to CN202111440605.9A priority Critical patent/CN114007112B/zh
Publication of CN114007112A publication Critical patent/CN114007112A/zh
Application granted granted Critical
Publication of CN114007112B publication Critical patent/CN114007112B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management 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/262Content 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/26208Content 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/26233Content 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management 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/262Content 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/26208Content 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/26241Content 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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视频文件中mdat box数据错误的修复方法
技术领域
本发明属于电子取证及数据恢复领域,涉及一种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类型名称、层级关系及说明请参考如下表一:
表一:
Figure BDA0003383215180000031
MP4视频文件所包括的更为详细的box类型名称、层级关系及说明请参考如下表二:
表二:
Figure BDA0003383215180000032
/>
Figure BDA0003383215180000041
/>
Figure BDA0003383215180000051
/>
Figure BDA0003383215180000061
/>
Figure BDA0003383215180000071
本发明所提供的方法包括以下步骤:
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视频文件并检测是否可以正常播放。
CN202111440605.9A 2021-11-30 2021-11-30 一种针对MP4视频文件中mdat box数据错误的修复方法 Active CN114007112B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111063376A (zh) * 2019-12-13 2020-04-24 厦门市美亚柏科信息股份有限公司 一种mp4修复中音视频同步的方法、终端设备和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
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 四川效率源信息安全技术股份有限公司 一种基于文件结构的监控视频的雕复方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
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