CN108093299A - Mp4损坏文件的修复方法及存储介质 - Google Patents

Mp4损坏文件的修复方法及存储介质 Download PDF

Info

Publication number
CN108093299A
CN108093299A CN201711404796.7A CN201711404796A CN108093299A CN 108093299 A CN108093299 A CN 108093299A CN 201711404796 A CN201711404796 A CN 201711404796A CN 108093299 A CN108093299 A CN 108093299A
Authority
CN
China
Prior art keywords
video
frame
file
box
audio 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
Application number
CN201711404796.7A
Other languages
English (en)
Other versions
CN108093299B (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.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
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 Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201711404796.7A priority Critical patent/CN108093299B/zh
Publication of CN108093299A publication Critical patent/CN108093299A/zh
Application granted granted Critical
Publication of CN108093299B publication Critical patent/CN108093299B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/439Processing of audio elementary streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing 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/4402Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia components thereof involving special audio data, e.g. different tracks for different languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本发明公开了一种MP4损坏文件的修复方法及存储介质,方法包括:获取参照视频;获取所述参照视频的序列参数集;根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;获取损坏文件中合法的视频帧,得到视频帧集合;获取损坏文件中两两视频帧之间的帧,得到音频帧集合;将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;根据所述参照视频和所述视音频帧集合,得到修复文件。本发明可整体提高MP4损坏文件的修复效果和修复支持率。

Description

MP4损坏文件的修复方法及存储介质
技术领域
本发明涉及修复技术领域,尤其涉及一种MP4损坏文件的修复方法及存储介质。
背景技术
随着智能手机和记录仪设备的普及,视频数据随处可见。如手机、行车记录仪、执法记录仪等每天都大批量的制作出视频数据,这些视频数据大部分使用MP4封装格式。
MP4全称MPEG-4Part 14,是一种常见的多媒体容器格式,现在大部分智能手机、无人机、行车记录仪等录像设备都以MP4作为视频封装格式。MP4是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分。MP4封装格式即打包格式,把已有的数据按照一定的格式进行封装打包。MP4数据封装以box为单位,图1为MP4封装格式box构成图。
遗憾的是这些宝贵的视频数据有时会遭遇各种意外,有的是设备故障导致视频录制中断,录制出来的视频无法播放,有的则是被人为的删除文件,虽然有数据恢复软件可以恢复视频数据,但是由于MP4视频封装格式对文件的完整性要求较高,恢复出来的数据有时并不是完整的数据,有一小部分数据已经被覆盖,导致视频损坏无法播放,但是没有被覆盖的数据可能就有关键信息,这时候需要有视频修复技术可以对这些不完整的视频进行修复,使损坏视频可以重新播放。
国内和国际上存在几款专门针对损坏MP4视频文件进行修复的软件。针对损坏MP4视频文件的修复通常采取如下方案:
提供一个参照视频(参照视频要求是同一设备录制的可正常播放的视频文件)通过参照视频提供的信息对磁盘进行音视频帧提取,再将提取到的音视频帧按照标准视频封装格式封装成MP4。
但现有方案存在以下不足:
1、部分视频声音修复不支持,音频修复支持率低。
2、部分视频恢复效果不好,虽然可以播放,但是画面存在花屏的情况。
发明内容
本发明所要解决的技术问题是:提供一种MP4损坏文件的修复方法及存储介质,可提高MP4损坏文件的修复效果和音频修复支持率低。
为了解决上述技术问题,本发明采用的技术方案为:一种MP4损坏文件的修复方法,包括:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
本发明的有益效果在于:通过采用缺陷帧识别算法,能对视频帧的完整性和有效性能做出判别,通过只获取合法的视频帧,从而大幅提升了视频修复效果,避免修复后存在花屏的情况;通过视音频交错差分数据提取方法,即将两两视频帧之间的帧作为音频帧进行获取,可有效对视频里的声音数据进行修复,大幅提高音频修复效果与修复支持率。本发明可整体提高MP4损坏文件的修复效果和修复支持率。
附图说明
图1为MP4封装格式示意图;
图2为本发明一种MP4损坏文件的修复方法的流程图;
图3为本发明实施例一的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:采用缺陷帧识别算法对视频帧的完整性和有效性做出判别;采用视音频交错差分数据提取方法来进行音频帧的提取。
请参阅图2,一种MP4损坏文件的修复方法,包括:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
从上述描述可知,本发明的有益效果在于:可整体提高MP4损坏文件的修复效果和修复支持率。
进一步地,所述“获取所述参照视频的序列参数集”具体为:
解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集。
由上述描述可知,NAL TYPE为7的NAL单元即为序列参数集。
进一步地,所述“根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号”具体为:
将损坏文件中的第一个字节作为当前字节;
获取以当前字节为起点的长度为八个字节的字节数据;
根据所述序列参数集对所述字节数据进行解码;
若解码失败,则将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤;
若解码成功,则将所述字节数据作为条带头,根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型和视频帧的帧号。
进一步地,所述“若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧”之后,进一步包括:
将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤。
由上述描述可知,在损坏文件中遍历得到包含视频帧帧头的条带头SliceHeader,从而可根据视频帧的帧头信息获取到视频帧,并可通过解析条带头得到条带类型Slice type和视频帧的帧号frame_num,用于判断视频帧是否合法。
进一步地,所述“根据所述参照视频和所述视音频帧集合,得到修复文件”具体为:
创建修复文件;
若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中;
计算所述视音频帧集合中的视音频帧的总长度,并根据所述总长度得到mdat box的头部信息;
将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdat box中;
从参照视频中的mvhd box中获取时间尺度;
从参照视频中的stts box中获取视频帧的单帧持续时长;
根据所述视频帧的单帧持续时长以及所述视音频帧集合中视频帧的总帧数,得到持续时长;
将所述时间尺度和持续时长写入修复文件的mvhd box中;
将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;
将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中;
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdat box的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;
根据偏移地址,分别对所述各视频帧和各音频帧进行分组;
将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中;
将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中;
将分组信息写入修复文件的stsc box中;
将视音频帧集合中类型为可随机读取帧的视频帧在视频帧集合中的帧序号写入修复文件的stss box中;
将参照视频的tkhd box、stsd box、stts box中的数据分别写入修复文件的tkhdbox、stsd box、stts box中。
由上述描述可知,根据参照视频的视音频帧的格式信息和编解码信息以及从损坏文件中的提取出的视音频帧,创建得到修复文件。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
进一步地,所述“获取所述参照视频的序列参数集”具体为:
解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集。
进一步地,所述“根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号”具体为:
将损坏文件中的第一个字节作为当前字节;
获取以当前字节为起点的长度为八个字节的字节数据;
根据所述序列参数集对所述字节数据进行解码;
若解码失败,则将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤;
若解码成功,则将所述字节数据作为条带头,根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型和视频帧的帧号。
进一步地,所述“若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧”之后,进一步包括:
将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤。
进一步地,所述“根据所述参照视频和所述视音频帧集合,得到修复文件”具体为:
创建修复文件;
若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中;
计算所述视音频帧集合中的视音频帧的总长度,并根据所述总长度得到mdat box的头部信息;
将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdat box中;
从参照视频中的mvhd box中获取时间尺度;
从参照视频中的stts box中获取视频帧的单帧持续时长;
根据所述视频帧的单帧持续时长以及所述视音频帧集合中视频帧的总帧数,得到持续时长;
将所述时间尺度和持续时长写入修复文件的mvhd box中;
将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;
将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中;
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdat box的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;
根据偏移地址,分别对所述各视频帧和各音频帧进行分组;
将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中;
将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中;
将分组信息写入修复文件的stsc box中;
将视音频帧集合中类型为可随机读取帧的视频帧在视频帧集合中的帧序号写入修复文件的stss box中;
将参照视频的tkhd box、stsd box、stts box中的数据分别写入修复文件的tkhdbox、stsd box、stts box中。
实施例一
请参照图3,本发明的实施例一为:一种MP4损坏文件的修复方法,包括如下步骤:
S1:获取参照视频;即获取同一设备录制的可正常播放的视频文件。
S2:获取所述参照视频的序列参数集;具体地,解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集,即获取NAL TYPE为7的NAL单元。
S3:将损坏文件中的第n个字节作为当前字节;n的初始值为1。
S4:判断n+8是否大于损坏文件的总字节数,若是,则表示损坏文件已遍历完,视频帧已提取完毕,执行步骤S11,若否,则执行步骤S5。
S5:获取以当前字节为起点的长度为八个字节的字节数据;
S6:根据所述序列参数集对所述字节数据进行解码,即根据序列参数集提供的信息对字节数据进行解码,判断是否解码成功,若是,则执行步骤S8,若否,则执行步骤S7。
S7:令n=n+1,执行步骤S3;
S8:判定所述字节数据为条带头(Slice Header),根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型(slice_type)和视频帧的帧号(frame_num)。
由于一帧视频图像可以编码为一个或若干个条带(Slice),上述步骤即在损坏文件中遍历寻找包含视频帧的帧头的Slice,由于帧头的四个字节表示该视频帧的长度,因此可以根据该Slice的前四个字节获取到对应的视频帧,然后从该Slice中获取该视频帧的slice_type和frame_num。
S9:判断所述视频帧是否为合法的视频帧,若是,则执行步骤S10,若否,则丢弃所述视频帧,然后继续搜索损坏文件,即执行步骤S7。具体地,若所述slice_type的值在0-9内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧。
该步骤中的所指的帧号连续是指到当前视频帧为止,同一周期内的视频帧的帧号是连续且完整的。
视频帧的frame_num是周期循环的,以帧率为30的视频为例,每秒都有30个视频帧,则frame_num在0-29内周期循环,也就是说,frame_num表示该视频帧为该秒(周期)的第frame_num+1个视频帧。
因此,该步骤中的所指的帧号连续具体是指与该视频帧处于同一秒的且帧号小于该视频帧的帧号的视频帧的帧号是连续的完整的且该视频帧的帧号与上一视频帧的帧号连续,也就是说,若在当前帧号周期内,该帧号之前的帧号是连续的完整的,且该帧号与上一帧号也连续,则认为帧号是连续的。若帧号不连续,则表示有断层。
例如,假设获取到某一秒的帧的frame_num依次为0、1、2、3、5、6、7…28、29,则会将frame_num为5-29的帧都丢弃。丢弃范围仅限1秒内的数据,下一秒的帧要重新判断其连续性。
S10:将所述合法的视频帧加入至视频帧集合;然后继续搜索损坏文件,即执行步骤S7。进一步地,此处返回的步骤S7中,可令n=n+所述合法的视频帧的总字节数,执行步骤S3,即将该视频帧之后的第一个字节作为当前字节,可提高遍历速度,从而提高修复效率。
S11:获取损坏文件中的音频帧,得到音频帧集合;根据视音频帧的存储规律,通常为一个关键帧后面存储一个音频帧,音频帧和视频帧交错存放,因此将损坏文件中两两视频帧之间的帧作为音频帧进行获取,也就是说,将所有视频帧提取完后,剩余的数据即为音频数据。进一步地,获取音频帧之后对其进行解码,若解码成功则加入音频帧集合,若解码失败则丢弃。
S12:将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;对于视频帧集合VS和音频帧集合AS中的每个元素Ai和Vi,均包含两个属性,分别为表项偏移ENTRYOFFSET以及表项大小ENTRYSIZE,其中,表项偏移ENTRYOFFSET是相对于损坏文件起始地址的偏移。
S13:根据所述参照视频和所述视音频帧集合,得到修复文件。
具体地,先创建修复文件;对于ftyp box,若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中。
对于mdat box,用于存放视音频帧;mdat box的头部信息包括mdat的长度和“mdatbox”四个字符,因此,计算所述视音频帧集合中的视音频帧的总长度,作为mdat的长度,然后加上“mdat box”四个字符即可得到mdat box的头部信息;然后将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdat box中。
对于moov box中的mvhd box,用于存放时间尺度(timescale)和持续时长(duration),持续时长除以时间尺度得到的值即为视频的总时长,单位为秒;时间尺度可以从参照视频中的mvhd box中提取;而对于持续时长,先从参照视频中的stts box中获取视频帧的单帧持续时长,然后将视音频帧集合中视频帧的总帧数乘以所述单帧持续时长,即可得到视频帧的持续时长,本实施例中,将视频帧的持续时长作为视频文件的持续时长;最后将所述时间尺度和持续时长写入修复文件的mvhd box中。
对于moov box中的tkhd box,重点更新视频分辨率信息,分辨率设置错误会导致播放花屏。如果直接使用参照视频的分辨率,则从参照视频的tkhd box中获取分辨率信息,并写入修复文件的tkhd box中。如果要对分辨率重新设置的话,优选地,设置为1080P或720P。
对于moov box中的stsd box,该box包含解码必要信息,如有错误会导致解码失败,从参照视频复制写入即可。
对于moov box中的stts box,用于存放视音频帧时长,从参照视频复制写入即可。
对于moov box中的stsz box,用于存放视音频帧的长度;在moov box中,存在两个stsz box,一个用来存放视频帧的长度,另一个用来存放音频帧的长度;因此,将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中。
对于moov box中的stco box,用于存放视音频帧的偏移地址,在moov box中,存在两个stco box,一个用来存放视频帧的偏移地址,另一个用来存放音频帧的偏移地址。
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdat box的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;具体计算过程如下:
假设HS={H1,H2,H3,....,Hn}表示视音频帧集合,即HS=AS∪US,其中Hn按ENTRYOFFSET从小到大进行排序;假设CS={C1,C2,C3,....,Cn}表示修复文件中视音频帧的集合,每个元素Ci包含表项偏移ENTRYOFFSET以及表项大小ENTRYSIZE;假设C1o……Cno表示集合CS中元素的ENTRYOFFSET,C1s……Cns表示集合CS中元素的ENTRYSIZE,即下标o表示ENTRYOFFSET,下标s表示ENTRYSIZE;假设ftyp box的大小为F,mdat box的头部大小为M;结合以上假设,得到视音频帧偏移地址的计算公式如下:
进一步地,视音频帧的长度的计算公式如下:
Cns=Hns
计算得到各视频帧和各音频帧的偏移地址后,再根据偏移地址进行分组,即将偏移地址连续的视频帧分为一组,将偏移地址连续的音频帧分为一组;然后将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中,将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中。
对于moov box中的stsc box,则将上述的分组信息写入修复文件的stsc box中;
对于moov box中的stss box,获取视音频帧集合中视频帧的类型(NAL TYPE),如果视频帧是可随机读取帧,则将该视频帧在视频帧集合中的帧序号写入修复文件的stssbox中。
本实施例通过采用缺陷帧识别算法,能对视频帧的完整性和有效性能做出判别,通过只获取合法的视频帧,从而大幅提升了视频修复效果,避免修复后存在花屏的情况;通过视音频交错差分数据提取方法,即将两两视频帧之间的帧作为音频帧进行获取,可有效对视频里的声音数据进行修复,大幅提高音频修复效果与修复支持率。
实施例二
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
进一步地,所述“获取所述参照视频的序列参数集”具体为:
解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集。
进一步地,所述“根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号”具体为:
将损坏文件中的第一个字节作为当前字节;
获取以当前字节为起点的长度为八个字节的字节数据;
根据所述序列参数集对所述字节数据进行解码;
若解码失败,则将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤;
若解码成功,则将所述字节数据作为条带头,根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型和视频帧的帧号。
进一步地,所述“若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧”之后,进一步包括:
将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤。
进一步地,所述“根据所述参照视频和所述视音频帧集合,得到修复文件”具体为:
创建修复文件;
若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中;
计算所述视音频帧集合中的视音频帧的总长度,并根据所述总长度得到mdat box的头部信息;
将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdat box中;
从参照视频中的mvhd box中获取时间尺度;
从参照视频中的stts box中获取视频帧的单帧持续时长;
根据所述视频帧的单帧持续时长以及所述视音频帧集合中视频帧的总帧数,得到持续时长;
将所述时间尺度和持续时长写入修复文件的mvhd box中;
将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;
将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中;
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdat box的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;
根据偏移地址,分别对所述各视频帧和各音频帧进行分组;
将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中;
将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中;
将分组信息写入修复文件的stsc box中;
将视音频帧集合中类型为可随机读取帧的视频帧在视频帧集合中的帧序号写入修复文件的stss box中;
将参照视频的tkhd box、stsd box、stts box中的数据分别写入修复文件的tkhdbox、stsd box、stts box中。
综上所述,本发明提供的一种MP4损坏文件的修复方法及存储介质,通过采用缺陷帧识别算法,能对视频帧的完整性和有效性能做出判别,通过只获取合法的视频帧,从而大幅提升了视频修复效果,避免修复后存在花屏的情况;通过视音频交错差分数据提取方法,即将两两视频帧之间的帧作为音频帧进行获取,可有效对视频里的声音数据进行修复,大幅提高音频修复效果与修复支持率。本发明可整体提高MP4损坏文件的修复效果和修复支持率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种MP4损坏文件的修复方法,其特征在于,包括:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
2.根据权利要求1所述的MP4损坏文件的修复方法,其特征在于,所述“获取所述参照视频的序列参数集”具体为:
解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集。
3.根据权利要求1所述的MP4损坏文件的修复方法,其特征在于,所述“根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号”具体为:
将损坏文件中的第一个字节作为当前字节;
获取以当前字节为起点的长度为八个字节的字节数据;
根据所述序列参数集对所述字节数据进行解码;
若解码失败,则将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤;
若解码成功,则将所述字节数据作为条带头,根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型和视频帧的帧号。
4.根据权利要求3所述的MP4损坏文件的修复方法,其特征在于,所述“若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧”之后,进一步包括:
将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤。
5.根据权利要求1所述的MP4损坏文件的修复方法,其特征在于,所述“根据所述参照视频和所述视音频帧集合,得到修复文件”具体为:
创建修复文件;
若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中;
计算所述视音频帧集合中的视音频帧的总长度,并根据所述总长度得到mdat box的头部信息;
将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdatbox中;
从参照视频中的mvhd box中获取时间尺度;
从参照视频中的stts box中获取视频帧的单帧持续时长;
根据所述视频帧的单帧持续时长以及所述视音频帧集合中视频帧的总帧数,得到持续时长;
将所述时间尺度和持续时长写入修复文件的mvhd box中;
将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;
将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中;
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdatbox的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;
根据偏移地址,分别对所述各视频帧和各音频帧进行分组;
将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中;
将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中;
将分组信息写入修复文件的stsc box中;
将视音频帧集合中类型为可随机读取帧的视频帧在视频帧集合中的帧序号写入修复文件的stss box中;
将参照视频的tkhd box、stsd box、stts box中的数据分别写入修复文件的tkhd box、stsd box、stts box中。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现以下步骤:
获取参照视频;
获取所述参照视频的序列参数集;
根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号;
若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧;
获取损坏文件中合法的视频帧,得到视频帧集合;
获取损坏文件中两两视频帧之间的帧,得到音频帧集合;
将所述视频帧集合中的视频帧和音频帧集合中的音频帧根据偏移进行排序,得到视音频帧集合;
根据所述参照视频和所述视音频帧集合,得到修复文件。
7.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“获取所述参照视频的序列参数集”具体为:
解码所述参照视频中类型值为7的网络抽象层单元,得到序列参数集。
8.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“根据所述序列参数集,对损坏文件中的条带头进行解码,得到条带类型和视频帧的帧号”具体为:
将损坏文件中的第一个字节作为当前字节;
获取以当前字节为起点的长度为八个字节的字节数据;
根据所述序列参数集对所述字节数据进行解码;
若解码失败,则将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤;
若解码成功,则将所述字节数据作为条带头,根据所述条带头的前四个字节获取所述条带头对应的视频帧,并根据解码结果得到条带类型和视频帧的帧号。
9.根据权利要求8所述的计算机可读存储介质,其特征在于,所述“若所述条带类型的值在预设的范围内且帧号连续,则判定所述条带头对应的视频帧为合法的视频帧”之后,进一步包括:
将当前字节的下一字节作为当前字节,继续执行所述获取以当前字节为起点的长度为八个字节的字节数据的步骤。
10.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“根据所述参照视频和所述视音频帧集合,得到修复文件”具体为:
创建修复文件;
若修复文件存在ftyp box,则从所述参照视频中获取ftyp数据,并将所述ftyp数据写入修复文件的ftyp box中;
计算所述视音频帧集合中的视音频帧的总长度,并根据所述总长度得到mdat box的头部信息;
将所述mdat box的头部信息和所述视音频帧集合中的视音频帧写入修复文件的mdatbox中;
从参照视频中的mvhd box中获取时间尺度;
从参照视频中的stts box中获取视频帧的单帧持续时长;
根据所述视频帧的单帧持续时长以及所述视音频帧集合中视频帧的总帧数,得到持续时长;
将所述时间尺度和持续时长写入修复文件的mvhd box中;
将所述视音频帧集合中各视频帧的长度写入修复文件中对应视频帧的stsz box中;
将所述视音频帧集合中各音频帧的长度写入修复文件中对应音频帧的stsz box中;
根据所述视音频帧集合中各视频帧和各音频帧的偏移以及ftyp box的大小和mdatbox的头部大小,计算得到所述视音频帧集合中各视频帧和各音频帧在所述修复文件中的偏移地址;
根据偏移地址,分别对所述各视频帧和各音频帧进行分组;
将各视频帧分组的偏移地址写入修复文件中对应视频帧的stco box中;
将各音频帧分组的偏移地址写入修复文件中对应音频帧的stco box中;
将分组信息写入修复文件的stsc box中;
将视音频帧集合中类型为可随机读取帧的视频帧在视频帧集合中的帧序号写入修复文件的stss box中;
将参照视频的tkhd box、stsd box、stts box中的数据分别写入修复文件的tkhd box、stsd box、stts box中。
CN201711404796.7A 2017-12-22 2017-12-22 Mp4损坏文件的修复方法及存储介质 Active CN108093299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711404796.7A CN108093299B (zh) 2017-12-22 2017-12-22 Mp4损坏文件的修复方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711404796.7A CN108093299B (zh) 2017-12-22 2017-12-22 Mp4损坏文件的修复方法及存储介质

Publications (2)

Publication Number Publication Date
CN108093299A true CN108093299A (zh) 2018-05-29
CN108093299B CN108093299B (zh) 2020-08-04

Family

ID=62178602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711404796.7A Active CN108093299B (zh) 2017-12-22 2017-12-22 Mp4损坏文件的修复方法及存储介质

Country Status (1)

Country Link
CN (1) CN108093299B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108961193A (zh) * 2018-08-10 2018-12-07 厦门市美亚柏科信息股份有限公司 一种图像修复方法、装置及存储介质
CN110662084A (zh) * 2019-10-15 2020-01-07 北京齐尔布莱特科技有限公司 一种mp4文件流直播的方法、移动终端及存储介质
CN110740391A (zh) * 2019-10-31 2020-01-31 四川效率源信息安全技术股份有限公司 一种修复mp4损坏文件的方法
CN110781037A (zh) * 2020-01-02 2020-02-11 成都易我科技开发有限责任公司 恢复存储介质中视频文件的方法、***及可读存储介质
CN111063380A (zh) * 2020-01-02 2020-04-24 南京美乐威电子科技有限公司 一种mp4文件生成方法,处理装置,设备以及存储介质
WO2020192012A1 (zh) * 2019-03-28 2020-10-01 腾讯音乐娱乐科技(深圳)有限公司 一种数据处理方法、设备及存储介质
CN112732180A (zh) * 2020-12-29 2021-04-30 哈尔滨海能达科技有限公司 一种信息处理方法、处理装置、电子设备及存储介质
CN113362233A (zh) * 2020-03-03 2021-09-07 浙江宇视科技有限公司 图片处理方法、装置、设备、***及存储介质
CN113382189A (zh) * 2021-05-24 2021-09-10 深圳市爱为物联科技有限公司 一种电子设备损坏文件修复方法
CN113507625A (zh) * 2021-06-22 2021-10-15 西安理工大学 一种自适应视频修复方法
CN113660442A (zh) * 2021-08-31 2021-11-16 广州盈可视电子科技有限公司 一种视频修复方法、装置、电子设备及可读介质
CN114007112A (zh) * 2021-11-30 2022-02-01 四川效率源信息安全技术股份有限公司 一种针对MP4视频文件中mdat box数据错误的修复方法
CN114257840A (zh) * 2021-11-26 2022-03-29 厦门市美亚柏科信息股份有限公司 一种用于Matroska格式视频的修复方法和***
CN114446330A (zh) * 2021-12-30 2022-05-06 厦门市美亚柏科信息股份有限公司 一种修复mp4文件的方法、装置以及存储介质
CN117544738A (zh) * 2023-11-10 2024-02-09 深圳麦风科技有限公司 Rsv文件的播放修复方法、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020152440A1 (en) * 2000-10-27 2002-10-17 Ilan Yona Apparatus and method for improving the quality of video communication over a packet-based network
US20050089102A1 (en) * 2002-02-21 2005-04-28 Roberto Alvarez Arevalo Video processing
CN103327362A (zh) * 2013-05-24 2013-09-25 武汉东信同邦信息技术有限公司 高可靠性流媒体存储***及其方法
CN104598328A (zh) * 2015-02-04 2015-05-06 南车株洲电力机车研究所有限公司 一种文件***修复方法、装置及***
CN104768025A (zh) * 2015-04-02 2015-07-08 无锡天脉聚源传媒科技有限公司 一种视频坏帧修复方法及装置
CN105426262A (zh) * 2014-09-11 2016-03-23 哈曼国际工业有限公司 用于avb网络的方法和***
CN107273244A (zh) * 2017-06-08 2017-10-20 深圳市普天宜通技术股份有限公司 一种媒体文件存储的容错控制方法及***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020152440A1 (en) * 2000-10-27 2002-10-17 Ilan Yona Apparatus and method for improving the quality of video communication over a packet-based network
US20050089102A1 (en) * 2002-02-21 2005-04-28 Roberto Alvarez Arevalo Video processing
CN103327362A (zh) * 2013-05-24 2013-09-25 武汉东信同邦信息技术有限公司 高可靠性流媒体存储***及其方法
CN105426262A (zh) * 2014-09-11 2016-03-23 哈曼国际工业有限公司 用于avb网络的方法和***
CN104598328A (zh) * 2015-02-04 2015-05-06 南车株洲电力机车研究所有限公司 一种文件***修复方法、装置及***
CN104768025A (zh) * 2015-04-02 2015-07-08 无锡天脉聚源传媒科技有限公司 一种视频坏帧修复方法及装置
CN107273244A (zh) * 2017-06-08 2017-10-20 深圳市普天宜通技术股份有限公司 一种媒体文件存储的容错控制方法及***

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108961193A (zh) * 2018-08-10 2018-12-07 厦门市美亚柏科信息股份有限公司 一种图像修复方法、装置及存储介质
CN108961193B (zh) * 2018-08-10 2021-04-02 厦门市美亚柏科信息股份有限公司 一种图像修复方法、装置及存储介质
WO2020192012A1 (zh) * 2019-03-28 2020-10-01 腾讯音乐娱乐科技(深圳)有限公司 一种数据处理方法、设备及存储介质
CN110662084B (zh) * 2019-10-15 2021-07-09 北京齐尔布莱特科技有限公司 一种mp4文件流直播的方法、移动终端及存储介质
CN110662084A (zh) * 2019-10-15 2020-01-07 北京齐尔布莱特科技有限公司 一种mp4文件流直播的方法、移动终端及存储介质
CN110740391A (zh) * 2019-10-31 2020-01-31 四川效率源信息安全技术股份有限公司 一种修复mp4损坏文件的方法
CN110740391B (zh) * 2019-10-31 2021-10-26 四川效率源信息安全技术股份有限公司 一种修复mp4损坏文件的方法
CN110781037A (zh) * 2020-01-02 2020-02-11 成都易我科技开发有限责任公司 恢复存储介质中视频文件的方法、***及可读存储介质
CN111063380A (zh) * 2020-01-02 2020-04-24 南京美乐威电子科技有限公司 一种mp4文件生成方法,处理装置,设备以及存储介质
CN113362233A (zh) * 2020-03-03 2021-09-07 浙江宇视科技有限公司 图片处理方法、装置、设备、***及存储介质
CN113362233B (zh) * 2020-03-03 2023-08-29 浙江宇视科技有限公司 图片处理方法、装置、设备、***及存储介质
CN112732180A (zh) * 2020-12-29 2021-04-30 哈尔滨海能达科技有限公司 一种信息处理方法、处理装置、电子设备及存储介质
CN112732180B (zh) * 2020-12-29 2023-04-14 哈尔滨海能达科技有限公司 一种信息处理方法、处理装置、电子设备及存储介质
CN113382189A (zh) * 2021-05-24 2021-09-10 深圳市爱为物联科技有限公司 一种电子设备损坏文件修复方法
CN113507625A (zh) * 2021-06-22 2021-10-15 西安理工大学 一种自适应视频修复方法
CN113660442A (zh) * 2021-08-31 2021-11-16 广州盈可视电子科技有限公司 一种视频修复方法、装置、电子设备及可读介质
CN113660442B (zh) * 2021-08-31 2024-03-19 广州盈可视电子科技有限公司 一种视频修复方法、装置、电子设备及可读介质
CN114257840A (zh) * 2021-11-26 2022-03-29 厦门市美亚柏科信息股份有限公司 一种用于Matroska格式视频的修复方法和***
CN114257840B (zh) * 2021-11-26 2024-03-19 厦门市美亚柏科信息股份有限公司 一种用于Matroska格式视频的修复方法和***
CN114007112A (zh) * 2021-11-30 2022-02-01 四川效率源信息安全技术股份有限公司 一种针对MP4视频文件中mdat box数据错误的修复方法
CN114446330A (zh) * 2021-12-30 2022-05-06 厦门市美亚柏科信息股份有限公司 一种修复mp4文件的方法、装置以及存储介质
CN114446330B (zh) * 2021-12-30 2024-04-16 厦门市美亚柏科信息股份有限公司 一种修复mp4文件的方法、装置以及存储介质
CN117544738A (zh) * 2023-11-10 2024-02-09 深圳麦风科技有限公司 Rsv文件的播放修复方法、设备及存储介质

Also Published As

Publication number Publication date
CN108093299B (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN108093299A (zh) Mp4损坏文件的修复方法及存储介质
CN104063447B (zh) 一种监控视频文件修复方法
CN108322808B (zh) 一种视频录像处理方法及装置、计算机装置、存储介质
CN109618235A (zh) 生成设备和方法、处理设备和方法以及存储介质
CN111063376A (zh) 一种mp4修复中音视频同步的方法、终端设备和存储介质
CN104602105B (zh) 视频文件的播放方法及用户设备
CN102026017B (zh) 一种视频解码高效测试方法
CN110740391B (zh) 一种修复mp4损坏文件的方法
CN104837031B (zh) 一种高速自适应提取视频关键帧的方法
CA2701311C (en) Multi dvr video packaging for incident forensics
CN102970556B (zh) 3dv 视频封装、播放方法及其***
CN101937695B (zh) 富媒体业务场景播放方法及文件播放器
CN104919812B (zh) 处理视频的设备和方法
CN108985244A (zh) 一种电视节目类型识别方法及装置
CN110781037B (zh) 恢复存储介质中视频文件的方法、***及可读存储介质
CN109101832A (zh) 一种基于区块链的遗嘱电子数据管理方法
CN100544413C (zh) 视频处理电路、多媒体播放***及其译码子画面数据方法
CN113660442B (zh) 一种视频修复方法、装置、电子设备及可读介质
CN108024138A (zh) 一种封装方法及装置
CN102169706B (zh) Yuv文件的存储、播放方法及其装置
CN106534748A (zh) 媒体文件的录制播放方法及终端
CN105303050B (zh) 一种医疗设备的故障信息存储方法及***
JP2012049956A (ja) 運転記録装置に搭載可能な半導体集積回路およびその動作方法
CN112929686A (zh) 线上实时回放录制视频的方法及装置
CN102509313A (zh) 一种多媒体图像数据的封装方法

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