CN116489458B - 一种基于文件字节分析的mp4修复方法、装置、终端及介质 - Google Patents
一种基于文件字节分析的mp4修复方法、装置、终端及介质 Download PDFInfo
- Publication number
- CN116489458B CN116489458B CN202310756984.5A CN202310756984A CN116489458B CN 116489458 B CN116489458 B CN 116489458B CN 202310756984 A CN202310756984 A CN 202310756984A CN 116489458 B CN116489458 B CN 116489458B
- Authority
- CN
- China
- Prior art keywords
- frame
- video
- file
- data
- frames
- 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
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 35
- 238000012795 verification Methods 0.000 claims abstract description 20
- 230000008439 repair process Effects 0.000 claims description 34
- 238000007906 compression Methods 0.000 claims description 15
- 230000006835 compression Effects 0.000 claims description 14
- 230000010354 integration Effects 0.000 claims description 9
- 238000007689 inspection Methods 0.000 claims description 8
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 17
- 238000004590 computer program Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44008—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
-
- 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)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于文件字节分析的MP4修复方法、装置、终端及介质,所述方法包括:按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。MP4文件的修复速度快、修复效率高。
Description
技术领域
本发明涉及视频文件修复技术领域,尤其涉及的是一种基于文件字节分析的MP4修复方法、装置、终端及介质。
背景技术
MP4作为一种最常使用的视频文件格式,运用范围非常的广泛。但同时存在电子数据易损坏的这一特性,容易在拍摄或传输过程中遭受损坏,导致整个视频无法打开。
目前在修复损坏的MP4时,从前往后按照字节流循序进行视频解析,视频数据被过度分析,修复速度慢、效率低。
因此,现有技术有待改进和提高。
发明内容
本发明的主要目的在于提供一种基于文件字节分析的MP4修复方法、装置、智能终端及存储介质,能够解决在修复损坏的MP4时,修复速度慢、效率低的问题。
为了实现上述目的,本发明第一方面提供一种基于文件字节分析的MP4修复方法,所述方法包括:
按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;
根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。
可选的,所述按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数,包括:
从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,读取所述解码参数,或,直至所述第一字节流中和所述第二字节流中均包括媒体数据的标识符。
可选的,所述根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集,包括:
根据所述解码参数,找到所有的I帧并对每个I帧进行校验;
保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;
对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧。
可选的,所述对所述视频帧集中的视频帧进行反向检验,包括:
将所述视频帧集中的最后一帧视频帧设为起始帧;
依次读取所述视频帧集中的下一帧并设为当前帧,当所述当前帧为所述视频帧集中的第一帧且不是I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧校验不成功;当所述当前帧为I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧数据校验成功,并将所述当前帧的前一帧设为所述起始帧,循环进行反向校验。
可选的,对I帧进行校验,包括:
获取视频编码的格式;
根据视频编码的格式,获取预设的校验字符;
当所述I帧中不存在所述校验字符时,判定所述I帧校验成功。
本发明第二方面提供一种基于文件字节分析的MP4修复装置,其中,上述装置包括:
解码参数模块,用于按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;
视频帧集模块,用于根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
整合压缩模块,用于分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。
可选的,所述解码参数模块包括双向搜索单元和解码参数解析单元,所述双向搜索单元用于从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,或,所述第一字节流中和所述第二字节流中均包括媒体数据的标识符;所述解码参数解析单元用于当所述第一字节流或所述第二字节流中存在所述解码参数的标识符时,读取所述解码参数。
可选的,所述视频帧集模块包括前向校验单元和反向校验单元,所述前向校验单元用于根据所述解码参数,找到所有的I帧并对每个I帧进行校验,保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;所述反向校验单元用于对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧。
本发明第三方面提供一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的基于文件字节分析的MP4修复程序,上述基于文件字节分析的MP4修复程序被上述处理器执行时实现任意一项上述基于文件字节分析的MP4修复方法的步骤。
本发明第四方面提供一种计算机可读存储介质,上述计算机可读存储介质上存储有基于文件字节分析的MP4修复程序,上述基于文件字节分析的MP4修复程序被处理器执行时实现任意一项上述基于文件字节分析的MP4修复方法的步骤。
由上可见,本发明在搜索解码参数时,按照字节流模式进行双向搜索,能够快速搜索到解码参数;然后根据解码参数读取帧数据并对帧数据进行双向校验,提高校验速度;最后对获得的视频帧集中的视频帧进行整合压缩,获得修复好的视频文件。与现有技术相比,修复速度快、修复效率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的基于文件字节分析的MP4修复方法流程示意图;
图2是MP4文件的主要box名称和层级关系示意图;
图3是图1实施例中双向校验的具体流程示意图;
图4是图1实施例中I帧校验的具体流程示意图;
图5是本发明实施例提供的基于文件字节分析的MP4修复装置的结构示意图;
图6是本发明实施例提供的一种智能终端的内部结构原理框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
目前在修复损坏的MP4时,从前往后按照字节流循序进行视频解析,视频数据被过度分析,修复速度慢、效率低。
本发明实施例提供了一种基于文件字节分析的MP4修复方法,运行在移动终端、电脑、服务器等电子设备中,能够快速、高效地修复损坏的MP4。
如图1所示,具体步骤包括:
步骤S100:按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;
具体地,待修复的视频文件(以下简称视频文件)为损坏了的MP4文件。在MP4文件中,数据由多个音/视频序列(track)组成,每个音/视频序列(track)就是一个随时间变化的媒体序列,音/视频序列(track)里包括多个sample,每个sample为一个时间单位,sample按照时间顺序排列。对视频数据来说,sample为一帧视频或一组连续视频帧;对音频数据来说,sample即为一段连续的压缩音频。
MP4文件的存储结构为若干个box,且box内还可嵌套若干个box,而这些box之间存在相应的关联性。MP4文件的主要box名称和层级关系请参阅图2所示。
第一级box包括:ftyp(file type box)、moov(movie box)和mdat(media databox)。ftyp仅有一个,它是mp4文件的标识,描述MP4文件遵从的MP4规范与版本,在mp4文件的开头;mdat用于存储实际的媒体数据,一般有多个;moov有且仅有一个,包括多个子box,moov的子box用于存储媒体描述元数据(metadata)。
moov的子box一般包含一个mvhd(movie header box)和若干个trak(track box)。一个MP4文件中至少有一个track,这些track之间彼此独立,有自己的时间和空间信息。mvhd是moov的第一个子box,用于存储MP4文件的总体信息,如文件时长、创建时间等;trak的子box用于储存音频轨道、视频轨道信息,trak的子box中必须包含一个tkhd(trackheader box)和一个mdia(media box),以及若干可选的box。 tkhd用于存储track的总体信息,如时长、宽高等;mdia包括多个子box,mdia的子box用于存储track媒体类型以及sample描述信息。一般情况下,mdia包含一个mdhd(media header box),一个hdlr(media handlerbox)和一个minf。mdhd存放TimeScale(媒体在1秒时间内的刻度值,可理解为1秒长度的时间单元数),trak需要TimeScale换算真实时间;hdlr指定trak类型为video/audio/hint;一般情况下,minf包括多个子box,包含一个header box,一个dinf(data information box)和一个stbl(sample table box),header box根据trak类型(即hdlr)分为vmhd、smhd、hmhd和nmhd, dinf解释如何定位媒体信息,stbl用于存储sample序号/时间/文件位置映射的信息。
dinf一般包含一个dref(data reference box); dref下会包含若干个url或urn,这些box组成一个表,用来定位track数据。简单的说,track可以被分成若干段,每一段都可以根据url或urn指向的地址来获取数据,sample描述中会用这些片段的序号将这些片段组成一个完整的track。一般情况下,当数据被完全包含在文件中时,url或urn中的定位字符串是空的。url或urn都是box,url的内容为字符串(location string),urn的内容为一对字符串(name string and location string)。当url或urn的box flag为1时,字符串均为空。
stbl用于存储track中sample的时间和位置信息,以及sample的编解码等信息。利用这个表,可以解释sample的时序、类型、大小以及在各自存储容器中的位置。stbl中比较关键的子box包括:stsd(存储音视频的编码、宽高、音量等信息,以及每个sample中包含多少帧)、stts(存储每个sample的时长)、stsz或stz2(存储每个sample的大小)、stsc(存储每个thunk中包含多少个sample)、stco或co64(存储thunk在文件中的位移)、ctts(存储帧解码到渲染的时间差值)、stss(存储哪些sample是I帧)。
具体地,stsd必不可少,且至少包含一个条目,该box包含了data reference box进行sample数据检索的信息。没有stsd就无法计算媒体的 sample的存储位置。stts描述了sample时序的映射方法,通过它可以找到任何时间的sample。stsz定义了每个sample的大小,包含了媒体中全部sample的数目和一张给出每个sample大小的表,这个box相对来说体积是比较大的。stsc中用一个表描述了sample与chunk的映射关系,查看这张表就可以找到包含指定sample的thunk,从而找到这个sample。stss确定媒体中的I帧。对于压缩媒体数据,I帧是一系列压缩序列的开始帧,其解压缩时不依赖以前的帧,而后续帧的解压缩将依赖于这个I帧。stss可以非常紧凑的标记媒体内的随机存取点,它包含一个sample序号表,表内的每一项严格按照sample的序号排列,说明了媒体中的哪一个sample是I帧。如果此表不存在,说明每一个sample都是一个I帧,是一个随机存取点。stco定义了每个thunk在媒体流中的位置,记录mdat 中chunk的偏移地址。
由上可知,解码参数主要为stbl类型的box,而stbl的索引结构为moov/trak/mdia/minf/stbl。目前需要从视频文件的开头按照字节流模式搜索视频文件,即每次从视频文件中读取一定数量的字节流,然后在字节流中搜索解码参数的标识符(即“stbl”字符串),当搜索到解码参数的标识符时,继续读取字节流,直至获得完整的stbl类型的box的内容,获得解码参数。然而,由于stbl的索引结构可知,在读取到stbl类型的box之前,需要先读取到moov、trak、mdia等box的内容,读取效率较低;并且,若是MP4文件中mdat类型的box的内容存储在moov类型的box之前,而MP4视频格式中视频数据所在的mdat占用了视频文件的主要部分,非常大,则还需要花费大量的时间读取、分析mdat的字节流,浪费很多时间,相当于视频数据被过度分析,效率更加低下。因此,本发明按照字节流模式双向搜索视频文件来获得解码参数,即分别从视频文件的头部向尾部和从视频文件的尾部向头部按字节流模式搜索解码参数,能够提高获得解码参数的效率,加快修复速度。
本实施例中,双向搜索解码参数的具体步骤包括:
从视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至第一字节流或第二字节流中存在解码参数的标识符时,读取解码参数,或,第一字节流中和第二字节流中均包括媒体数据的标识符。
具体地,采用双线程分别从视频文件的起始位置向后读取第一字节流和从视频文件的末尾位置向前读取第二字节流,第一字节流和第二字节流的大小不做限制,优选为磁盘块缓存的大小,如256字节或512字节,则可以从存储视频文件的磁盘中成块读取数据,读取速度快。
当第一字节流中存在解码参数的标识符时,将解码参数的标识符所在的位置作为起始位置,分析第一字节流中的数据,若存在到其他类型box的标识符(如"stsd"、" stts"、"stsc"、"stco"等字符串)时,将其他类型box的标识符所在位置作为结束位置,起始位置和结束位置之间的内容则为解码参数的内容,并可以根据stbl类型的box的结构进行分析,重建出stbl类型的box。若第一字节流中没有读取到其他类型box的标识符时,则继续读取视频文件的字节流,直至在字节流中找到其他类型box的标识符(如"stsd"、" stts "、"stsc"、"stco"等字符串),将该位置作为结束位置,起始位置和结束位置之间的内容则为解码参数的内容。
当第一字节流中不存在解码参数的标识符时,则继续向后再次读取若干字节并追加至第一字节流,判断第一字节流中是否存在解码参数的标识符,若存在则按照前述内容读取到解码参数,否则继续向后读取若干字节并追加至第一字节流,如此循环读取和判断,直至第一字节流中存在解码参数的标识符或媒体数据的标识符(即"mdat"字符串)。第一字节流中包括媒体数据的标识符,意味着搜索到mdat类型的box,此时不再继续读取字节流,停止向后搜索,避免对mdat中的数据进行分析检索。
对第二字节流的分析与对第一字节流的分析同理,当第二字节流中存在解码参数的标识符时,读取解码参数,否则继续向前搜索视频文件,直至向前搜索到mdat类型的box或者解码参数,则停止向前搜索。
需要说明的是,只要在第一字节流或第二字节流中读取到了解码参数,则搜索过程结束;当向前方向搜索到mdat类型的box或向后方向搜索到mdat类型的box时,则该方向停止搜索,由另一个方向继续搜索,直至搜索到解码参数;若是两个方向都不能搜索到解码参数,则意味着该MP4文件无法修复,流程结束。
通过将双方向的搜索结果结合,获得完整的搜索结果,能够节省搜索时间,避免过度分析mdat中的视频数据。
步骤S200:根据解码参数读取视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
具体地,获得解码参数后,就可以参考上述的MP4文件存储结构,分析解码参数,获得sample、track的文件位置、时间、序号等信息,在MP4文件中的mdat中提取每个sample下的帧数据。帧数据可能是正常的视频帧,也可能是损坏的视频帧或者无法判断类型的帧数据。因此,读取到这些帧数据后,还需要进行校验以挑选出正常的视频帧并保存,获得视频帧集,否则可能导致修复后的视频文件在播放时仍出现花屏的现象。
由于视频文件的视频帧主要分为:I帧、P帧和B帧,I帧又称为内编码帧,是一种自带全部信息的独立帧,可独立解码,可理解为一张静态图片,也称为I帧。P帧又称为帧间预测编码帧,需要参考前面的帧才能编码,P帧会占用更少的数据位,但同时,对前帧参考帧会有很强的依赖性,所以对数据传输错误很敏感。B帧又称为双向预测编码帧,B帧记录的是本帧和前后帧的差别,解码B帧,不仅要获得之前的缓存画面,还需要解码之后的画面,通过前后画面以及本帧数据的叠加获得最终的画面,B帧的压缩率高,但是对解码性能要求也高。
因此可以看出I帧是视频解析的基础,本发明为了进一步提高修复的效率,在对帧数据进行校验时,采用了双向校验,即在前向阶段只对I帧进行校验,确保I帧是正常的视频帧;在后向阶段则假设最后一帧是正常的,由于数据是连续性的,如果A帧前面的一帧符合视频帧的结构,那么就认为A帧是正常的视频帧,循环往前验证,直到I帧后保存这一连续块的帧数据。如果前面找不到I帧,则可以丢弃这一连续块的帧数据,如果前面还有下一帧就继续循环往前验证。
在一个实施例中,如图3所示,双向校验的具体步骤包括:
步骤S210:根据解码参数,找到所有的I帧并对每个I帧进行校验;
在一个示例中,根据解码参数,获得编码类型。直接对mdat下的数据块进行分析,获得I帧。具体地,mdat是压缩打包后的全部音视频实际数据。视频的压缩方式为:{2个字节的数据块长度}{实际数据块};音频压缩方式一般是直接写入实际音频数据。以H264为例,先从mdat下面读取两个字节,假设为视频数据,并且编码参数为AVCC(也就是h264),那么后面跟着的就是实际H264流的数据。读取下一个字节,这就是NALU header(NALU为一种封装的模组,一个sample下有多个NALU),按位(bit)分析这个字节,如果NALU Type(NALUHeader的第4~8个位)是1~9 和12之中的一个,那么就可能是I帧。NALU Type如果是:1,5,6,9那么就进行I帧校验。
在另一个示例中,首先根据解码参数,从解码参数中读取到每个sample的时长、每个sample中包含多少帧、每个sample的大小、哪些sample是I帧、每个thunk中包含多少个sample、thunk在文件中的位移等信息快速地找到所有的I帧,然后对每个I帧进行校验,确保I帧没有损坏,能够正常解析。
在一个实施例中,如图4所示,I帧校验的具体步骤包括:
步骤S211:获取视频编码的格式;
步骤S212:根据视频编码的格式,获取预设的校验字符;
步骤S213:当I帧中不存在上述校验字符时,判定I帧校验成功。
在对I帧进行校验时,首先从ftyp类型的box中获取到视频编码的格式,如:MPEG-2、H264、AV1、EVC等,不同视频编码的格式对MP4文件的压缩过程不同。预先对视频编码的格式进行分析,可以得出各种视频编码格式下,视频文件中不可能出现的数据串,将这些数据串保存为预设的校验字符。当I帧的数据中不存在这些校验字符时,则判定I帧为正常的视频帧,校验成功。以H264的视频编码格式为例,由于视频帧的数据中必没有{0,0,1}这么连续排列的数据,所以可以通过检查是否有此数据来判断视频帧是否正常,也即可以判定I帧是否正常。
由上所述,通过简单的字符串比较来校验I帧,既能过滤掉损坏的I帧,又能提高校验的效率。需要说明的是,I帧校验并不限于上述方法,还可以采用其他方法对I帧进行校验。
步骤S220:保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当帧数据为视频帧时,将帧数据保存至视频帧集。
通常I帧及I帧之后的帧数据大部分是正常的、没有损坏,基于这点,当I帧校验成功时,保存I帧至视频帧集后,依次读取I帧后的每一帧的帧数据,当该帧数据为视频帧,就将帧数据保存至视频帧集,当该帧数据为非视频帧(不是I 帧、P帧、B帧等,可能为存储结构描述数据或不能判断类型的帧数据)时,则结束针对于该校验成功的I帧之后帧数据的读取过程。
步骤S230:对视频帧集中的视频帧进行反向检验,从视频帧集中剔除反向检验不成功的视频帧。
保存在视频帧集中的视频帧,只有I帧经过验证,确保是正常的视频帧,其他视频帧可能是正常的视频帧,也可能是损坏的视频帧。因此,还需要对视频帧集中的视频帧进行反向检验,以剔除反向校验不成功的视频帧,从而确保视频帧集中的视频帧都是正常的视频帧。
反向校验的具体过程为:先将视频帧集中的最后一帧作为起始帧;然后读取起始帧的前一帧(即当前帧),若当前帧为普通视频帧(即P帧和B帧)时,则继续往前读取下一帧;若当前帧为I帧时,则意味着I帧、起始帧以及I帧和起始帧之间的视频帧能够根据解码参数正常解码,这一段视频帧(起始帧以及I帧和起始帧之间的视频帧)判定为反向校验成功,并将当前帧的前一帧作为起始帧,循环进行反向校验;若当前帧不是I帧、P帧和B帧中的任意一种时,则将当前帧、起始帧以及当前帧与起始帧之间的帧判定为反向校验不成功,将当前帧的下一帧作为起始帧,循环进行反向校验;若当前帧为视频帧集中的第一帧且又不是I帧时,则将当前帧、起始帧以及当前帧与起始帧之间的帧判定为反向校验不成功。
这些判定为反向校验不成功的视频帧,意味着这些帧数据将不能被正确解析出来,作为视频帧时会出现花屏的现象,因此可以将反向检验不成功的帧数据从视频帧集中剔除。
由上所述,通过双向校验,能够提高视频帧集的校验效率。
步骤S300:分析视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。
经过上述步骤处理后,视频帧集中的视频帧都能够被正常解码。由于FFMPEG是一套可以用来记录、转换数字音频、视频,并能将其转化为视频流的开源计算机程序,包含了非常先进的音频/视频编解码库libavcodec,能够进行各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构。本实施例借助于FFMPEG来方便地对视频帧进行整合压缩。将视频帧集中的视频帧输入FFMPEG,在FFMPEG中重新进行整合压缩,就可以获得修复后的MP4文件。利用FFMPEG的编解码能力,不仅整合压缩为视频流非常方便,还能进行进一步的优化,排除掉一些无法解码的视频帧,完成MP4的修复。
综上所述,通过在搜索解码参数时,按照字节流模式进行双向搜索,快速搜索到解码参数;然后根据解码参数读取帧数据并对帧数据进行双向校验,前向校验时只校验I帧,能够提高校验速度;最后对获得的视频帧集中的视频帧进行整合压缩,获得修复好的视频文件。修复速度快、效率高。
示例性系统
如图5所示,对应于上述基于文件字节分析的MP4修复方法,本发明实施例还提供基于文件字节分析的MP4修复装置,上述装置包括:
解码参数模块600,用于按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;
视频帧集模块610,用于根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
整合压缩模块620,用于分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。
在一个实施例中,所述解码参数模块包括双向搜索单元和解码参数解析单元,所述双向搜索单元用于从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,或,所述第一字节流中和所述第二字节流中均包括媒体数据的标识符;所述解码参数解析单元用于当所述第一字节流或所述第二字节流中存在所述解码参数的标识符时,读取所述解码参数。
在一个实施例中,所述视频帧集模块包括前向校验单元和反向校验单元,所述前向校验单元用于根据所述解码参数,找到所有的I帧并对每个I帧进行校验,保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;所述反向校验单元用于对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧。
具体的,本实施例中,上述基于文件字节分析的MP4修复装置的各模块的具体功能可以参照上述基于文件字节分析的MP4修复方法中的对应描述,在此不再赘述。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图6所示。上述智能终端包括通过系统总线连接的处理器、存储器、网络接口以及显示屏。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和基于文件字节分析的MP4修复程序。该内存储器为非易失性存储介质中的操作系统和基于文件字节分析的MP4修复程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该基于文件字节分析的MP4修复程序被处理器执行时实现上述任意一种基于文件字节分析的MP4修复方法的步骤。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图6中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的基于文件字节分析的MP4修复程序,上述基于文件字节分析的MP4修复程序被上述处理器执行时进行以下操作指令:
按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数;
根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件。
可选的,所述按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数,包括:
从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,读取所述解码参数,或,直至所述第一字节流中和所述第二字节流中均包括媒体数据的标识符。
可选的,所述根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集,包括:
根据所述解码参数,找到所有的I帧并对每个I帧进行校验;
保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;
对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧。
可选的,所述对所述视频帧集中的视频帧进行反向检验,包括:
将所述视频帧集中的最后一帧视频帧设为起始帧;
依次读取所述视频帧集中的下一帧并设为当前帧,当所述当前帧为所述视频帧集中的第一帧且不是I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧校验不成功;当所述当前帧为I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧数据校验成功,并将所述当前帧的前一帧设为所述起始帧,循环进行反向校验。
可选的,对I帧进行校验,包括:
获取视频编码的格式;
根据视频编码的格式,获取预设的校验字符;
当所述I帧中不存在所述校验字符时,判定所述I帧校验成功。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有基于文件字节分析的MP4修复程序,上述基于文件字节分析的MP4修复程序被处理器执行时实现本发明实施例提供的任意一种基于文件字节分析的MP4修复方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (7)
1.基于文件字节分析的MP4修复方法,其特征在于,所述方法包括:
按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数,所述待修复的视频文件为文件已损坏的视频文件;
根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件;
所述根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集,包括:
根据所述解码参数,找到所述帧数据中所有的I帧并对每个I帧进行校验;
保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;
对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧;
所述对所述视频帧集中的视频帧进行反向检验,包括:
将所述视频帧集中的最后一帧设为起始帧;
从后向前依次读取所述视频帧集中的下一帧并设为当前帧,当所述当前帧为所述视频帧集中的第一帧且不是I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧校验不成功;当所述当前帧为I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧数据校验成功,并将所述当前帧的前一帧设为所述起始帧,循环进行反向校验。
2.如权利要求1所述的基于文件字节分析的MP4修复方法,其特征在于,所述按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数,包括:
从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,读取所述解码参数,或,直至所述第一字节流中和所述第二字节流中均包括媒体数据的标识符。
3.如权利要求1所述的基于文件字节分析的MP4修复方法,其特征在于,对I帧进行校验,包括:
获取视频编码的格式;
根据视频编码的格式,获取预设的校验字符,所述校验字符为视频文件中不可能出现的数据串;
当所述I帧中不存在所述校验字符时,判定所述I帧校验成功。
4.基于文件字节分析的MP4修复装置,其特征在于,所述装置包括:
解码参数模块,用于按照字节流模式双向搜索待修复的视频文件,获得用于读取帧数据的解码参数,所述待修复的视频文件为文件已损坏的视频文件;
视频帧集模块,用于根据所述解码参数读取所述视频文件中的帧数据并对帧数据进行双向校验,获得视频帧集;
整合压缩模块,用于分析所述视频帧集中的视频帧并进行整合压缩,获得修复好的视频文件;
所述视频帧集模块包括前向校验单元和反向校验单元,所述前向校验单元用于根据所述解码参数,找到所述帧数据中所有的I帧并对每个I帧进行校验,保存校验成功的I帧至视频帧集,并依次读取校验成功的I帧之后的帧数据,当所述帧数据为视频帧时,将所述帧数据保存至所述视频帧集;所述反向校验单元用于对所述视频帧集中的视频帧进行反向检验,从所述视频帧集中剔除反向检验不成功的视频帧;
所述对所述视频帧集中的视频帧进行反向检验,包括:
将所述视频帧集中的最后一帧设为起始帧;
从后向前依次读取所述视频帧集中的下一帧并设为当前帧,当所述当前帧为所述视频帧集中的第一帧且不是I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧校验不成功;当所述当前帧为I帧时,判定所述当前帧、所述起始帧以及所述当前帧与所述起始帧之间的帧数据校验成功,并将所述当前帧的前一帧设为所述起始帧,循环进行反向校验。
5.如权利要求4所述的基于文件字节分析的MP4修复装置,其特征在于,所述解码参数模块包括双向搜索单元和解码参数解析单元,所述双向搜索单元用于从所述视频文件的起始位置向后依次读取若干字节、末尾位置向前依次读取若干字节,分别获得第一字节流和第二字节流,直至所述第一字节流或所述第二字节流中存在所述解码参数的标识符,或,所述第一字节流中和所述第二字节流中均包括媒体数据的标识符;所述解码参数解析单元用于当所述第一字节流或所述第二字节流中存在所述解码参数的标识符时,读取所述解码参数。
6.智能终端,其特征在于,所述智能终端包括存储器、处理器以及存储在所述存储器上并在所述处理器上运行的基于文件字节分析的MP4修复程序,所述基于文件字节分析的MP4修复程序被所述处理器执行时实现如权利要求1-3任意一项所述基于文件字节分析的MP4修复方法的步骤。
7.计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于文件字节分析的MP4修复程序,所述基于文件字节分析的MP4修复程序被处理器执行时实现如权利要求1-3任意一项所述基于文件字节分析的MP4修复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310756984.5A CN116489458B (zh) | 2023-06-26 | 2023-06-26 | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310756984.5A CN116489458B (zh) | 2023-06-26 | 2023-06-26 | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116489458A CN116489458A (zh) | 2023-07-25 |
CN116489458B true CN116489458B (zh) | 2023-09-01 |
Family
ID=87223631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310756984.5A Active CN116489458B (zh) | 2023-06-26 | 2023-06-26 | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116489458B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110839135A (zh) * | 2019-12-04 | 2020-02-25 | 厦门市美亚柏科信息股份有限公司 | 一种用于dv或hdv视频文件的恢复方法和系统 |
KR20200041650A (ko) * | 2018-10-12 | 2020-04-22 | 펜타시큐리티시스템 주식회사 | 참조 동영상의 메타 정보에 기반한 훼손 mp4 동영상 파일의 복구 방법 및 장치 |
CN112584234A (zh) * | 2020-12-09 | 2021-03-30 | 广州虎牙科技有限公司 | 视频图像的补帧方法及相关装置 |
CN114007112A (zh) * | 2021-11-30 | 2022-02-01 | 四川效率源信息安全技术股份有限公司 | 一种针对MP4视频文件中mdat box数据错误的修复方法 |
CN116132696A (zh) * | 2023-02-14 | 2023-05-16 | 格兰菲智能科技有限公司 | 基于gpu的码流错误检测和反馈的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11677987B2 (en) * | 2020-10-15 | 2023-06-13 | Qualcomm Incorporated | Joint termination of bidirectional data blocks for parallel coding |
-
2023
- 2023-06-26 CN CN202310756984.5A patent/CN116489458B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200041650A (ko) * | 2018-10-12 | 2020-04-22 | 펜타시큐리티시스템 주식회사 | 참조 동영상의 메타 정보에 기반한 훼손 mp4 동영상 파일의 복구 방법 및 장치 |
CN110839135A (zh) * | 2019-12-04 | 2020-02-25 | 厦门市美亚柏科信息股份有限公司 | 一种用于dv或hdv视频文件的恢复方法和系统 |
CN112584234A (zh) * | 2020-12-09 | 2021-03-30 | 广州虎牙科技有限公司 | 视频图像的补帧方法及相关装置 |
CN114007112A (zh) * | 2021-11-30 | 2022-02-01 | 四川效率源信息安全技术股份有限公司 | 一种针对MP4视频文件中mdat box数据错误的修复方法 |
CN116132696A (zh) * | 2023-02-14 | 2023-05-16 | 格兰菲智能科技有限公司 | 基于gpu的码流错误检测和反馈的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116489458A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111063376B (zh) | 一种mp4修复中音视频同步的方法、终端设备和存储介质 | |
DE60102831T2 (de) | System und verfahren zur verarbeitung von mpeg-stroemen fuer die einfuegung von dateiindex | |
US9262419B2 (en) | Syntax-aware manipulation of media files in a container format | |
CN108322808B (zh) | 一种视频录像处理方法及装置、计算机装置、存储介质 | |
US8340505B2 (en) | Method of processing audio-video data | |
CN110740391B (zh) | 一种修复mp4损坏文件的方法 | |
US11750784B2 (en) | Automatic video file repair method and system | |
EP3070947A1 (en) | Video frame decoding method and apparatus | |
KR101489523B1 (ko) | 데이터 스트림으로 비디오 데이터 및 관련 메타데이터를 전송하기 위한 방법 | |
CN114007112B (zh) | 一种针对MP4视频文件中mdat box数据错误的修复方法 | |
US20110222835A1 (en) | Application Tracks in Audio/Video Containers | |
Park et al. | Data fragment forensics for embedded DVR systems | |
CN116489458B (zh) | 一种基于文件字节分析的mp4修复方法、装置、终端及介质 | |
Hadi | Reviewing and evaluating existing file carving techniques for JPEG files | |
KR20200041650A (ko) | 참조 동영상의 메타 정보에 기반한 훼손 mp4 동영상 파일의 복구 방법 및 장치 | |
US20050111493A1 (en) | Methods, decoder circuits and computer program products for processing MPEG audio frames | |
CN114125469B (zh) | Mp4文件修复方法、装置、电子设备及存储介质 | |
KR101632689B1 (ko) | 멀티미디어 조각파일의 복구방법 | |
CN114257840B (zh) | 一种用于Matroska格式视频的修复方法和系统 | |
Alghafli et al. | Identification and recovery of video fragments for forensics file carving | |
CN113507625B (zh) | 一种自适应视频修复方法 | |
US8200067B2 (en) | Processing of scalable compressed video data formats for nonlinear video editing systems | |
CN101383964A (zh) | 一种对压缩视频流进行编辑、解码的方法、装置和系统 | |
CN113127265B (zh) | 行车记录文件的修复方法及系统 | |
JP4383721B2 (ja) | 多重化分離装置 |
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 |