首页 / 专利库 / 广播 / 帧内预测 / 一种基于文件结构的监控视频的雕复方法

一种基于文件结构的监控视频的雕复方法

阅读:1042发布:2020-05-16

专利汇可以提供一种基于文件结构的监控视频的雕复方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于文件结构的监控视频的雕复方法,其特征在于包括以下步骤:S100:加载并判断当前监控视频是否为MP4格式,如果是,执行步骤S200,否则,执行步骤S600;S200:获取当前监控视频的文件头所在簇的数据fytp box;S300:逐簇扫描磁盘并获取当前监控视频中各个的moov box的内容;S400:解析并查找各个MP4文件头所在簇对应的moov box;S500:采用moov box及MP4文件头所在簇的 帧 描述信息,雕复MP4文件,结束流程;S600:解析数据编码流,雕复监控视频。,下面是一种基于文件结构的监控视频的雕复方法专利的具体信息内容。

1.一种基于文件结构的监控视频的雕复方法,其特征在于包括以下步骤:
S100:加载并判断当前监控视频是否为MP4格式,如果是,执行步骤S200,否则,执行步骤S600;
S200:获取当前监控视频的文件头所在簇的数据fytp box;
S300:逐簇扫描磁盘并获取当前监控视频中各个的moov box的内容;
S400:解析并查找各个MP4文件头所在簇对应的moov box;
S500:采用moov box及MP4文件头所在簇的描述信息,雕复MP4文件,包括以下步骤:
S501:获取MP4文件头所在簇的最后一帧的内容,包括最后一帧的字节长度、最后一帧在MP4文件头所在簇内实际存储的字节数及最后一帧的剩余字节数,其中,所述剩余字节数按下述公式计算得出:
最后一帧的剩余字节数=stsz box中描述的最后一帧字节长度-最后一帧在MP4文件头所在簇的实际数据长度;
S502:获取moov box中各个MP4文件头所在簇的最后一帧中所包含的后续帧的描述信息,用以获取所述后续帧在MP4中的偏移地址及字节长度;
S503:逐簇扫描并判断是否为同时满足下述条件A至条件C的簇,如果是,执行步骤S504,否则,执行步骤S503;
条件A:当前簇的首个帧的字节长度与MP4文件头所在簇的最后一帧的剩余字节数相等;
条件B:当前簇内剩余帧的字节长度等于moov box中MP4文件头所在簇的最后一帧后面的帧结构字节长度;
条件C:当前簇连接到MP4文件头所在簇后面,当前簇内的所有帧结构相对于MP4文件头的偏移地址与moov box中stco box内MP4文件头所在簇的最后一帧之后的帧偏移地址各自一一对应;
S504:雕复MP4文件:将所获取到的包含MP4文件头结构的mdat box所有簇和步骤S400中对应的moov box拼接后组合成完整的MP4文件;
S505:将mdat box中tkhd box的存储时间转换为YY-MM-DD_hh/mm/ss格式的本地时间,采用本地时间对所雕复的MP4文件命名,结束流程;
S600:解析数据编码流,雕复监控视频。
2.根据权利要求1所述的一种基于文件结构的监控视频的雕复方法,其特征在于,所述步骤S100中判断当前监控视频是否为MP4格式的步骤包括:逐簇扫描并记录磁盘中各个簇的起始地址向后偏移0x04字节并连续读取4字节的内容,判断所述内容是否为ASCII码表示的字符串ftyp,如果是,则表示当前监控视频为MP4格式。
3.根据权利要求2所述的一种基于文件结构的监控视频的雕复方法,其特征在于,所述步骤S200包括如下步骤:
S201:所记录的ftyp的个数等于MP4文件的个数,通过所记录的ftyp的个数确定MP4文件的个数;
S202:获取各个MP4文件的文件头所在簇的数据fytp box。
4.根据权利要求1所述的一种基于文件结构的监控视频的雕复方法,其特征在于,所述步骤S300包括以下步骤:
S301:逐簇扫描并判断是否为同时满足下述条件D及条件E,如果是,执行步骤S302,否则,执行步骤S600:
条件D:是否存在连续4字节的内容为moov box的标识,所述标识为ASCII码表示的字符串moov;
条件E:所述moov box的标识向后偏移4字节并连续读取4字节的内容,判断所读取内容是否为ASCII码表示的字符串mvhd;
S302:根据moov box的结构获取moov box的完整数据内容,包括moov box嵌套的各个box及各个box的字节长度;
在磁盘各个簇中找到moov box的各个box所在簇,按照moov box的结构,将moov box的内容拼接完整;
S303:解析moov box中stco box和stsz box,包括stco box描述的MP4文件中mdat box的帧结构相对于文件起始地址的偏移地址、stsz box描述的MP4文件中mdat box的帧结构的字节长度。
5.根据权利要求1所述的一种基于文件结构的监控视频的雕复方法,其特征在于,所述步骤S400包括以下步骤:
S401:解析MP4文件头所在簇内mdat box的帧结构:解析mdat box中各帧相对于MP4文件头起始地址的偏移地址及各帧的字节长度;
S402:获取MP4文件头所在簇对应的moov box:根据所述步骤S401所解析出的mdat box中帧结构,并与所述步骤S300中各个moov box的stco box及stsz box内容对比,用以获取MP4文件头所在簇对应的moov box。
6.根据权利要求1所述的一种基于文件结构的监控视频的雕复方法,其特征在于,所述步骤S600包括以下步骤:
S601:判断数据编码流是否为H264格式:判断是否为同时满足下述条件F至条件H,如果是,则表示数据编码流为H264格式,执行步骤S602,否则,结束流程:
条件F:数据编码流前4字节为帧的字节长度,第5字节的内容与0x1F逻辑与的值为帧类型,所述帧类型为1、5、7、8中任一值,其中,1表示帧数据为非关键帧,所述非关键帧为向前预测编码帧P帧或双向预测内插编码帧B帧;5表示关键帧,其为首个帧内编码帧;7表示序列参数集SPS;8表示图像参数集PPS;
条件G:符合条件F的帧的下一帧的帧类型符合条件F;
条件H:帧类型为7的帧,后续帧的帧类型均为7;帧类型为8的帧,后续帧的帧类型均为
8;帧类型为5的帧,其下一帧的帧类型为1;
S602:逐簇查找首帧可播放的帧:逐簇查找帧类型为5的帧,按照帧的字节长度提取出当前簇包含的各个帧;
S603:获取簇内最后一帧的信息:根据所述步骤S602所提取的帧,获取当前簇内最后一帧的信息,包括最后一帧的字节长度、帧类型、当前簇所存储的最后一帧的实际字节数及剩余字节数;
S604:逐簇获取有效帧:根据所述步骤S603所获取的所述最后一帧的信息,逐簇查找同时满足下述条件I及条件J的簇,作为所述步骤S603所述最后一帧所在簇的下一簇:
条件I:簇内第一帧的实际字节长度等于所述步骤S603中所述最后一帧的所述剩余字节数;
条件J:簇内第二帧的帧类型满足所述步骤S601中条件H;
S605:获取磁盘的各个有效帧并按帧结构组合为新的视频,完成监控视频的雕复。

说明书全文

一种基于文件结构的监控视频的雕复方法

技术领域

[0001] 本发明属于数据恢复与电子取证领域,涉及一种监控视频的雕复方法,尤其涉及一种基于文件结构的监控视频的雕复方法。

背景技术

[0002] 目前市面有很多生产监控机的厂家,其中有很多监控视频采用的视频文件格式为MP4格式或H264数据编码流格式。
[0003] 现有技术中,分区存储结构被损坏的情况下,对于MP4文件格式或H264数据编码流格式存储的监控视频数据,目前还没有快速高效的数据恢复提取方法,对于其中监控数据的展示还存在如下弊端:
[0004] 1.对于存储监控数据的磁盘分区被破坏,无法识别的情况下,无法根据分区结构获取到磁盘中存储的监控视频文件。
[0005] 2.监控数据以固定大小的簇为单位并随机存储在磁盘的各个扇区,在磁盘分区结构受损的情况下,无法快速准确地获取到同一个MP4格式文件下的监控视频,并且很难判断同一MP4格式文件中存储监控视频的各个簇的排列顺序。
[0006] 综上所述,急需一种操作方便、能够快速识别以MP4格式文件或H264数据编码流格式存储的磁盘、能够在磁盘分区结构被破坏无法识别的情况下,对其中的监控视频文件进行数据雕复,实现监控数据提取、雕复、恢复的方法。

发明内容

[0007] 针对现有技术的不足,本发明提供了一种针对采用MP4文件存储结构或H264数据编码流格式的监控视频数据,在磁盘中存储监控数据的分区被损坏的情况下,对监控视频数据进行雕复,从而实现mp4格式或H264数据编码流格式监控视频数据的快速全面的提取、雕复、生成的mp4监控视频文件或H264数据编码流文件的方法,并确保提取、雕复、生成的监控视频能够正常播放。
[0008] 本发明申请包括以下步骤:
[0009] S100:加载并判断当前监控视频是否为MP4格式,如果是,执行步骤S200,否则,执行步骤S600;
[0010] S200:获取当前监控视频的文件头所在簇的数据fytp box;
[0011] S300:逐簇扫描磁盘并获取当前监控视频中各个的moov box的内容;
[0012] S400:解析并查找各个MP4文件头所在簇对应的moov box;
[0013] S500:采用moov box及MP4文件头所在簇的描述信息,雕复MP4文件,包括以下步骤:
[0014] S501:获取MP4文件头所在簇的最后一帧的内容,包括最后一帧的字节长度、最后一帧在MP4文件头所在簇内实际存储的字节数及最后一帧的剩余字节数,其中,所述剩余字节数按下述公式计算得出:
[0015] 最后一帧的剩余字节数=stsz box中描述的最后一帧字节长度-最后一帧在MP4文件头所在簇的实际数据长度;
[0016] S502:获取moov box中各个MP4文件头所在簇的最后一帧中所包含的后续帧的描述信息,用以获取所述后续帧在MP4中的偏移地址及字节长度;
[0017] S503:逐簇扫描并判断是否为同时满足下述条件A至条件C的簇,如果是,执行步骤S504,否则,执行步骤S503;
[0018] 条件A:当前簇的首个帧的字节长度与MP4文件头所在簇的最后一帧的剩余字节数相等;
[0019] 条件B:当前簇内剩余帧的字节长度等于moov box中MP4文件头所在簇的最后一帧后面的帧结构字节长度;
[0020] 条件C:当前簇连接到MP4文件头所在簇后面,当前簇内的所有帧结构相对于MP4文件头的偏移地址与moov box中stco box内MP4文件头所在簇的最后一帧之后的帧偏移地址各自一一对应;
[0021] S504:雕复MP4文件:将所获取到的包含MP4文件头结构的mdat box所有簇和步骤S400中对应的moov box拼接后组合成完整的MP4文件;
[0022] S505:将mdat box中tkhd box的存储时间转换为YY-MM-DD_hh/mm/ss格式的本地时间,采用本地时间对所雕复的MP4文件命名,结束流程;
[0023] S600:解析数据编码流,雕复监控视频。
[0024] 优选地,所述步骤S100中判断当前监控视频是否为MP4格式的步骤包括:逐簇扫描并记录磁盘中各个簇的起始地址向后偏移0x04字节并连续读取4字节的内容,判断所述内容是否为ASCII码表示的字符串ftyp,如果是,则表示当前监控视频为MP4格式。
[0025] 优选地,所述步骤S200包括如下步骤:
[0026] S201:所记录的ftyp的个数等于MP4文件的个数,通过所记录的ftyp的个数确定MP4文件的个数;
[0027] S202:获取各个MP4文件的文件头所在簇的数据fytp box。
[0028] 优选地,所述步骤S300包括以下步骤:
[0029] S301:逐簇扫描并判断是否为同时满足下述条件D及条件E,如果是,执行步骤S302,否则,执行步骤S600:
[0030] 条件D:是否存在连续4字节的内容为moov box的标识,所述标识为ASCII码表示的字符串moov;
[0031] 条件E:所述moov box的标识向后偏移4字节并连续读取4字节的内容,判断所读取内容是否为ASCII码表示的字符串mvhd;
[0032] S302:根据moov box的结构获取moov box的完整数据内容,包括moov box嵌套的各个box及各个box的字节长度;
[0033] 在磁盘各个簇中找到moov box的各个box所在簇,按照moov box的结构,将moov box的内容拼接完整;
[0034] S303:解析moov box中stco box和stsz box,包括stco box描述的MP4文件中mdat box的帧结构相对于文件起始地址的偏移地址、stsz box描述的MP4文件中mdat box的帧结构的字节长度。
[0035] 优选地,所述步骤S400包括以下步骤:
[0036] S401:解析MP4文件头所在簇内mdat box的帧结构:解析mdat box中各帧相对于MP4文件头起始地址的偏移地址及各帧的字节长度;
[0037] S402:获取MP4文件头所在簇对应的moov box:根据所述步骤S401所解析出的mdat box中帧结构,并与所述步骤S300中各个moov box的stco box及stsz box内容对比,用以获取MP4文件头所在簇对应的moov box。
[0038] 优选地,所述步骤S600包括以下步骤:
[0039] S601:判断数据编码流是否为H264格式:判断是否为同时满足下述条件F至条件H,如果是,则表示数据编码流为H264格式,执行步骤S602,否则,结束流程:
[0040] 条件F:数据编码流前4字节为帧的字节长度,第5字节的内容与0x1F逻辑与的值为帧类型,所述帧类型为1、5、7、8中任一值,其中,1表示帧数据为非关键帧,所述非关键帧为向前预测编码帧P帧或双向预测内插编码帧B帧;5表示关键帧,其为首个帧内编码帧;7表示序列参数集SPS;8表示图像参数集PPS;
[0041] 条件G:符合条件F的帧的下一帧的帧类型符合条件F;
[0042] 条件H:帧类型为7的帧,后续帧的帧类型均为7;帧类型为8的帧,后续帧的帧类型均为8;帧类型为5的帧,其下一帧的帧类型为1;
[0043] S602:逐簇查找首帧可播放的帧:逐簇查找帧类型为5的帧,按照帧的字节长度提取出当前簇包含的各个帧;
[0044] S603:获取簇内最后一帧的信息:根据所述步骤S602所提取的帧,获取当前簇内最后一帧的信息,包括最后一帧的字节长度、帧类型、当前簇所存储的最后一帧的实际字节数及剩余字节数;
[0045] S604:逐簇获取有效帧:根据所述步骤S603所获取的所述最后一帧的信息,逐簇查找同时满足下述条件I及条件J的簇,作为所述步骤S603所述最后一帧所在簇的下一簇:
[0046] 条件I:簇内第一帧的实际字节长度等于所述步骤S603中所述最后一帧的所述剩余字节数;
[0047] 条件J:簇内第二帧的帧类型满足所述步骤S601中条件H;
[0048] S605:获取磁盘的各个有效帧并按帧结构组合为新的视频,完成监控视频的雕复。
[0049] 本发明具有以下有益效果是:解决了现有技术中尚无一种基于文件结构的监控视频的雕复方法的技术问题。附图说明
[0050] 图1为本发明所提供的方法的总流程图
[0051] 图2为本发明的一个实施例中moov box的数据结构示意图;
[0052] 图3为本发明的一个实施例中mdat box的数据结构示意图;
[0053] 图4为本发明的一个实施例中雕复MP4文件的具体流程图;
[0054] 图5为本发明的一个实施例中解析数据编码流、雕复监控视频的具体流程图。

具体实施方式

[0055] 图1示出了本发明所提供的方法的总流程图,图2示出了本发明的一个实施例中moov box的数据结构示意图,图3示出了本发明的一个实施例中mdat box的数据结构示意图。结合图1、图2及图3进行说明。
[0056] 如图1所示,本发明所提供的方法包括以下步骤:
[0057] S100:加载并判断当前监控视频是否为MP4格式,如果是,执行步骤S200,否则,执行步骤S600;
[0058] 具体地,逐簇扫描并记录磁盘中各个簇的起始地址向后偏移0x04字节并连续读取4字节的内容,判断内容是否为ASCII码表示的字符串ftyp,如果是,则表示当前监控视频为MP4格式。
[0059] S200:获取当前监控视频的文件头所在簇的数据fytp box;
[0060] 步骤S200包括如下步骤:
[0061] S201:所记录的ftyp的个数等于MP4文件的个数,通过所记录的ftyp的个数确定MP4文件的个数;
[0062] S202:获取各个MP4文件的文件头所在簇的数据fytp box。
[0063] S300:逐簇扫描磁盘并获取当前监控视频中各个的moov box的内容;
[0064] 步骤S300包括以下步骤:
[0065] S301:逐簇扫描并判断是否为同时满足下述条件D及条件E,如果是,执行步骤S302,否则,执行步骤S600:
[0066] 条件D:是否存在连续4字节的内容为moov box的标识,标识为ASCII码表示的字符串moov;
[0067] 条件E:moov box的标识向后偏移4字节并连续读取4字节的内容,判断所读取内容是否为ASCII码表示的字符串mvhd;
[0068] S302:根据moov box的结构获取moov box的完整数据内容,包括moov box嵌套的各个box及各个box的字节长度;
[0069] 在磁盘各个簇中找到moov box的各个box所在簇,按照moov box的结构,将moov box的内容拼接完整;
[0070] S303:解析moov box中stco box和stsz box,包括stco box描述的MP4文件中mdat box的帧结构相对于文件起始地址的偏移地址、stsz box描述的MP4文件中mdat box的帧结构的字节长度。
[0071] S400:解析并查找各个MP4文件头所在簇对应的moov box;步骤S400包括以下步骤:
[0072] S401:解析MP4文件头所在簇内mdat box的帧结构:解析mdat box中各帧相对于MP4文件头起始地址的偏移地址及各帧的字节长度;
[0073] S402:获取MP4文件头所在簇对应的moov box:根据步骤S401所解析出的mdat box中帧结构,并与步骤S300中各个moov box的stco box及stsz box内容对比,用以获取MP4文件头所在簇对应的moov box。
[0074] S500:采用moov box及MP4文件头所在簇的帧描述信息,雕复MP4文件。图4示出了本发明的一个实施例中雕复MP4文件的具体流程图。如图4所示,包括以下步骤:
[0075] S501:获取MP4文件头所在簇的最后一帧的内容,包括最后一帧的字节长度、最后一帧在MP4文件头所在簇内实际存储的字节数及最后一帧的剩余字节数,其中,剩余字节数按下述公式计算得出:
[0076] 最后一帧的剩余字节数=stsz box中描述的最后一帧字节长度-最后一帧在MP4文件头所在簇的实际数据长度;
[0077] S502:获取moov box中各个MP4文件头所在簇的最后一帧中所包含的后续帧的描述信息,用以获取后续帧在MP4中的偏移地址及字节长度;
[0078] S503:逐簇扫描并判断是否为同时满足下述条件A至条件C的簇,如果是,执行步骤S504,否则,执行步骤S503;
[0079] 条件A:当前簇的首个帧的字节长度与MP4文件头所在簇的最后一帧的剩余字节数相等;
[0080] 条件B:当前簇内剩余帧的字节长度等于moov box中MP4文件头所在簇的最后一帧后面的帧结构字节长度;
[0081] 条件C:当前簇连接到MP4文件头所在簇后面,当前簇内的所有帧结构相对于MP4文件头的偏移地址与moov box中stco box内MP4文件头所在簇的最后一帧之后的帧偏移地址各自一一对应;
[0082] S504:雕复MP4文件:将所获取到的包含MP4文件头结构的mdat box所有簇和步骤S400中对应的moov box拼接后组合成完整的MP4文件;
[0083] S505:将mdat box中tkhd box的存储时间转换为YY-MM-DD_hh/mm/ss格式的本地时间,采用本地时间对所雕复的MP4文件命名,结束流程;
[0084] S600:解析数据编码流,雕复监控视频。图5示出了本发明的一个实施例中解析数据编码流、雕复监控视频的具体流程图。如图5所示,包括以下步骤:
[0085] S601:判断数据编码流是否为H264格式:判断是否为同时满足下述条件F至条件H,如果是,则表示数据编码流为H264格式,执行步骤S602,否则,结束流程:
[0086] 条件F:数据编码流前4字节为帧的字节长度,第5字节的内容与0x1F逻辑与的值为帧类型,帧类型为1、5、7、8中任一值,其中,1表示帧数据为非关键帧,非关键帧为向前预测编码帧P帧或双向预测内插编码帧B帧;5表示关键帧,其为首个帧内编码帧;7表示序列参数集SPS;8表示图像参数集PPS;
[0087] 条件G:符合条件F的帧的下一帧的帧类型符合条件F;
[0088] 条件H:帧类型为7的帧,后续帧的帧类型均为7;帧类型为8的帧,后续帧的帧类型均为8;帧类型为5的帧,其下一帧的帧类型为1;
[0089] S602:逐簇查找首帧可播放的帧:逐簇查找帧类型为5的帧,按照帧的字节长度提取出当前簇包含的各个帧;
[0090] S603:获取簇内最后一帧的信息:根据步骤S602所提取的帧,获取当前簇内最后一帧的信息,包括最后一帧的字节长度、帧类型、当前簇所存储的最后一帧的实际字节数及剩余字节数;
[0091] S604:逐簇获取有效帧:根据步骤S603所获取的最后一帧的信息,逐簇查找同时满足下述条件I及条件J的簇,作为步骤S603最后一帧所在簇的下一簇:
[0092] 条件I:簇内第一帧的实际字节长度等于步骤S603中最后一帧的剩余字节数;
[0093] 条件J:簇内第二帧的帧类型满足步骤S601中条件H;
[0094] S605:获取磁盘的各个有效帧并按帧结构组合为新的视频,完成监控视频的雕复。
[0095] 通过本发明提供的方法,解决了现有技术中尚无一种基于文件结构的监控视频的雕复方法的技术问题。
[0096] 应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈