CN114257840A - 一种用于Matroska格式视频的修复方法和系统 - Google Patents
一种用于Matroska格式视频的修复方法和系统 Download PDFInfo
- Publication number
- CN114257840A CN114257840A CN202111423300.7A CN202111423300A CN114257840A CN 114257840 A CN114257840 A CN 114257840A CN 202111423300 A CN202111423300 A CN 202111423300A CN 114257840 A CN114257840 A CN 114257840A
- Authority
- CN
- China
- Prior art keywords
- video
- block
- frame
- file
- reference file
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000008439 repair process Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 10
- 238000000605 extraction Methods 0.000 claims 1
- 238000005538 encapsulation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- 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/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234345—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
公开了一种用于Matroska格式视频的修复方法和系统,包括获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组;遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合;基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。本发明支持Matroska封装的视频格式,只需损坏文件中残留部分视频数据帧即可修复成功。
Description
技术领域
本发明涉及数据处理的技术领域,尤其是一种用于Matroska格式视频的修复方法和系统。
背景技术
Matroska是一种开放标准的自由容器和多媒体文件封装格式,能够在一个文件中容纳无限个视频、音频、图片或者字幕轨道。容乃不同的内容具有不同的文件扩展名。包括mkv(包含视频/音频),mka(纯音频),mka(纯字幕),WebM(视频编码为vp8或vp9,音频为Vorbis编码)其中mkv和WebM是最常见的应用。特别是自从谷歌开源了vp8,vp9编码格式后WebM得到广泛应用,各大手机厂商,浏览器,Adobe的Flash player,YouTube等都支持WebM格式播放。日常使用中突然断电、网络传输过程中突然断网、勒索病毒加密文件部分数据、文件删除后继续使用导致文件部分覆盖、磁盘故障等都可能导致文件的损坏。
mkv/WebM是一种常见视频格式,目前市面上一些厂家宣称支持mkv格式修复软件,经过实际操作验证修复效果极差,或者基本无法修复。
发明内容
为了解决现有技术中mkv格式修复效果极差,或者基本无法修复技术问题,本发明提出了一种用于Matroska格式视频的修复方法和系统,以解决上述技术问题。
根据本发明的一个方面,提出了一种用于Matroska格式视频的修复方法,该方法包括:
S1:获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;
S2:从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组;
S3:遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合;以及
S4:基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。
在一些具体的实施例中,步骤S1中还包括解析参考文件的Segment及其所有子元素,获取track数、视频编码格式、视频图像分辨率。
在一些具体的实施例中,步骤S2中简单块的获取具体包括:
S21:从损坏文件的偏移地址搜索简单块ID,若简单块ID有效,从偏移地址读取长度;
S22:判断长度与文件大小的关系,若长度大于文件大小,则简单块ID无效,若否,解析简单块的track号;
S23:判断track号与参考文件的track数的关系,若track号大于参考文件的track数,则简单块无效,若否,读取flag,解析lacing标志;
S24:若lancing≠0,则简单块无效,若否,且存在连续3个以上简单块且连续的简单块为有效块,将连续有效的简单块放入块集合中。
在一些具体的实施例中,步骤S2中有效块组的获取具体包括:
从损坏文件的偏移地址搜索块组ID,若块组ID有效,从偏移地址读取长度,若长度大于文件大小,则块组ID无效,若否,依次解析块组的所有子元素,若所有子元素的大小之和与块组的大小相等,且获取到ID为0xA1的块的子元素则块组有效,将有效块组放入块集合。
在一些具体的实施例中,简单块ID和块组ID的无效条件为ID的后一个字节为0。如ID的后一个字节是0则表示Size所占字节数超过8,不可能有这么大的元素,通过该方式可以快速判断ID是否有效。
在一些具体的实施例中,步骤S3中基于参考文件将有效帧存入有效帧集合具体包括:
读取视频帧,对于已知视频编码格式的视频帧,根据参考文件的视频编码格式,与视频图像的分辨率判断视频帧是否有效:若参考文件的编码格式是VP8,且当前块标志isKey为1,若视频帧的起始码为0x9d012a且读取该帧的分辨率等于参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是VP9,且当前块标志isKey为1,若视频帧的起始码为0x498342且读取该帧的分辨率等于参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是H264/H265,且读取数据帧长度和块中的帧长一致,则该帧存入有效帧集合;如果参考文件编码格式是mpeg4,若视频帧的起始码为0x000001b0或0x000001b3或0x000001b6,则该帧存入有效帧集合。
根据本发明的第二方面,提出了一种计算机可读存储介质,其上存储有一或多个计算机程序,该一或多个计算机程序被计算机处理器执行时实施上述任一项的方法。
根据本发明的第三方面,提出了一种用于Matroska格式视频的修复系统,该系统包括:
参考文件获取解析单元,配置用于获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;
块集合获取单元,配置用于从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组;
有效帧集合获取单元:配置用于遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合;
修复单元:配置用于基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。
在一些具体的实施例中,参考文件获取解析单元还包括解析参考文件的Segment及其所有子元素,获取track数、视频编码格式、视频图像分辨率。
在一些具体的实施例中,块集合获取单元中简单块的获取具体包括从损坏文件的偏移地址搜索简单块ID,若简单块ID有效,从偏移地址读取长度;判断长度与文件大小的关系,若长度大于文件大小,则简单块ID无效,若否,解析简单块的track号;判断track号与参考文件的track数的关系,track号大于参考文件的track数,则简单块无效,若否,读取flag,解析lacing标志;若lancing≠0,则简单块无效,若否,且存在连续3个以上简单块且连续的简单块为有效块,将连续有效的简单块放入块集合中。
在一些具体的实施例中,块集合获取单元中有效块组的获取具体包括从损坏文件的偏移地址搜索块组ID,若块组ID有效,从偏移地址读取长度,若长度大于文件大小,则块组ID无效,若否,依次解析块组的所有子元素,若所有子元素的大小之和与块组的大小相等,且获取到ID为0xA1的块的子元素则块组有效,将有效块组放入块集合。
在一些具体的实施例中,简单块ID和块组ID的无效条件为ID的后一个字节为0。
在一些具体的实施例中,有效帧集合获取单元中基于参考文件将有效帧存入有效帧集合具体包括:读取视频帧,对于已知视频编码格式的视频帧,根据参考文件的视频编码格式,与视频图像的分辨率判断视频帧是否有效:若参考文件的编码格式是VP8,且当前块标志isKey为1,若视频帧的起始码为0x9d012a且读取该帧的分辨率等于参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是VP9,且当前块标志isKey为1,若视频帧的起始码为0x498342且读取该帧的分辨率等于参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是H264/H265,且读取数据帧长度和块中的帧长一致,则该帧存入有效帧集合;如果参考文件编码格式是mpeg4,若视频帧的起始码为0x000001b0或0x000001b3或0x000001b6,则该帧存入有效帧集合。
本发明提出了一种用于Matroska格式视频的修复方法和系统,通过结合EBML框架提取损坏文件的数据块,实现不针对视频编码格式的修复;对于已知编码格式可准确判断修复准确性;另外该方法不依赖损坏视频文件完整度,只需文件中残了部分视频数据即可提取修复。解决了目前市面上无法修复mkv/WebM文件问题,且修复效果较好。
附图说明
包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例的用于Matroska格式视频的修复方法的流程图;
图2a-b是本申请的一个具体的实施例的EBML框架示意图;
图3是本申请的一个具体的实施例的EBML head示意图;
图4a-b是本申请的一个具体的实施例的簇框架示意图;
图5a-c是本申请的一个具体的实施例的验证测试效果图;
图6是本申请的一个实施例的用于Matroska格式视频的修复系统的框架图;
图7是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
根据本申请的一个实施例的用于Matroska格式视频的修复方法,图1示出了根据本申请的实施例的用于Matroska格式视频的修复方法的流程图。如图1所示,该方法包括:
S101:获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息。跳过EBML Head的长度,解析Segment及所有子元素,包含Mete Seek info、Segment info、Track、Clusters等元素。并且得到Track数N,视频编码格式为T,视频的宽W,视频的高H。
在具体的实施例中,Matroska是基于EBML(Extensible Binary Meta Language)框架实现的,EBML是参考XML实现的用于存储二进制数据的格式,因此EBML也是一种支持嵌套的可扩展的灵活的框架。EBML Element是构成EBML的基础,多个EBML Element构成一个Document。EBML Element包含三个元素:ID(唯一标识),Size(大小),Data(数据),Data中可以嵌套一级的EBML Element,其框架如图2a所示。EBML使用不定长整数表达方法,具体表达方法为:从第一个bit开始计数,直到出现bit为1结束包含的bit个数再加1表示这个整数值的字节数(假设为N),实际值为字节数表示的整数高N位清零。EBML Element的ID、Size都使用该方法表示。mkv/WebM文件包含2个Level0的EBML Element。分别是EBML head和Segment,其框架如图2b所示。
在具体的实施例中,EBML Head的框架如图3所示,EBML Head位于文件头部,主要记录了EBML的版本,文档类型,文档类型版本等信息,EBML Head元素的ID是0x1A45DFA3。
S102:从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组。集合D={D1,D2,D3,…,Dn}为损坏文件中提取的块集合。
在具体的实施例中,Segment是另一个level 0的元素。包含多个level 1的元素,主要包括Mete Seek info、Segment info、Track、Clusters。其中Clusters包含所有的音视频数据,由多个cluster组成。如图4a所示,每个cluster中可能包含多个BlockGroup(块组,ID为A0),每个BlockGroup可能由Block(块,ID为0xA1)、参考块ReferenceBlock组成,块由4字节块头和帧数据组成,块头包含所属Track Number,相对时间戳,是否关键帧标识isKey,帧数据存储方式标识Lacing;如图4b所示,cluster也可能直接由SimpleBlock(简单块,ID为0xA3)组成,音视频帧数据可以交错存储在块中,但是每个Block存储的数据必须是音频、视频、字幕的一种。
在具体的实施例中,从损坏文件获取简单块集合包括以下步骤:
S201:设损坏文件的偏移地址Offset=0。
S202:从Offset位置搜索简单块ID(0xA3),若搜索到简单块ID,并判断ID是否有效,若有效则记录该位置Offset1=Offset执行步骤S203,否则Offset加1重复执行步骤S202继续搜索直到文件结束。
S203:从Offset位置读取长度Size,若Size大于文件大小L,则该ID无效,Offset=Offset1+1,重复执行步骤S202,否则Offset加Size所占字节数执行步骤S204。
S204:解析该简单块的Track号,如果Track号大于参考文件的Track数则该简单块无效,Offset=Offset1+1,重复执行步骤S202,否则执行步骤S205。
S205:读取Flag,解析Lacing标志,如果Lacing不等于0则该简单块无效,Offset=Offset1+1重复执行步骤S202,否则执行步骤S206。
S206:若存在连续3个以上简单块则判断为连续的简单块为有效块,把该数据块放入集合D,Offset加Size重复执行步骤S202直到结束。
在具体的实施例中,从损坏文件获取块集合包括以下步骤:
S211:设损坏文件的偏移地址Offset=0。
S212:从Offset位置搜索块组ID(0xA0),若搜索到块组ID,并判断ID是否有效,若有效则记录该位置Offset1=Offset执行步骤S213,否则Offset加1重复执行步骤S212继续搜索直到文件结束。
S213:从Offset位置读取长度Size,若Size大于文件大小L,则该ID无效,Offset=Offset1+1,重复执行步骤S212,否则Offset加Size所占字节数执行步骤S214。
S214:依次解析块组的所有子元素,若所有子元素的大小之和等于块组的大小Size且获取到ID为0xA1的Block子元素则该块组有效,该ID为0xA1的Block放入集合D。否则Offset=Offset1+1,重复执行步骤S212。
在具体的实施例中,mkv/WebM文件的数据存储在cluster中,cluster由块组或简单块组成,只要能从损坏文件中提取出块组或者简单块即可获取到音视频数据。Matroska是基于EBML框架实现的,每个EBML element包含ID、Size、Data三个元素组成。通过搜索ID可以初步确认元素的起始地址,再结合下一级所有EBML element的Size之和等于当前Size即可准确判断EBML element获取是否正确。基于此可从损坏文件获取所有的块组。根据EBML不定长整数表达方法,ID后一个字节一定不为0,如果是0则表示Size所占字节数超过8,不可能有这么大的元素,因此该ID为无效ID。一个簇中往往包含多个连续的快组或简单块。对于搜索到的连续的块组或简单块可以判定为有效块组或简单块。
S103:遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合。集合F={F1,F2,F3,…,Fn}为损坏文件中提取的帧集合。
在具体的实施例中,依次遍历块集合D,读取块的Track Number。通过参考文件判断该Track Number是否为视频轨道,如果不是视频轨道则直接根据Lacing值读取视频帧,存入帧集合F;如果是视频轨道,读取视频帧,并读取isKey标志,对于已知的视频编码格式根据参考文件的视频编码格式T,分辨率W,H,进一步判断视频帧是否有效,帧有效则放入集合F,无效则丢弃,如果视频编码格式未知则不做判断直接存入集合F。例如:如果参考文件编码格式是VP8,且当前块标志isKey为1,若视频帧的起始码为0x9d012a且读取该帧的分辨率等于参考文件的分辨率(包括视频图像的宽W和高H),则该帧存入帧集合F,否则为无效帧;如果参考文件编码格式是VP9,且当前块标志isKey为1,若视频帧的起始码为0x498342且读取该帧的分辨率等于参考文件的分辨率W,H,则该帧存入帧集合F,否则为无效帧;如果参考文件编码格式是H264/H265,且读取数据帧长度和块中的帧长一致,则该帧存入帧集合F,否则为无效帧;如果参考文件编码格式是mpeg4,若视频帧的起始码为0x000001b0或0x000001b3或0x000001b6,则该帧存入帧集合F,否则为无效帧;若集合F中不包含视频帧或者不包含视频关键帧则修复失败。
在具体的实施例中,同一设备录制的或者同一条件下生成的mkv/WebM文件具有相同的音视频参数,通过解析参数相同的文件得到音视频编码格式,分辨率,采样率等文件信息,通过获得文件参数信息及音视频帧数据重组封装成mkv/WebM文件即可达到播放从损坏文件中提取的音视频数据的目的。Track中记录了视频分辨率信息,视频关键帧中通常也记录了视频分辨信息如VP8/VP9编码,通过从损坏文件中提取的视频分辨率可校验参考文件是否正确。视频编码帧的帧头部包含起始码等特征,通过编码格式及帧结构特征可进一步判断获取的数据帧是否准确。
S104:基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。从参考拷贝EBML Head及Segment等信息,从参考文件获取视频帧率,根据视频帧率设置每一个视频帧时间戳,确保音视频帧时间戳递增,依次写入音视频帧数据。
在一个具体的实施例中,图5a-c是本申请的一个具体的实施例的验证测试效果图,准备两个文件参数(视频编码格式,视频分辨率,音频编码格式,采样率等)一致的mkv/webm文件,分别记为文件1,文件2。使用winhex工具把文件2的前半部分清零,如图5a所示。文件2损坏后无法播放,如图5b所示,把文件1当做参考文件,文件2作为损坏文件,使用上述的修复方法修复损坏的文件2。修复后可正常播放,如图5c所示。
继续参考图6,图6示出了根据本发明的实施例的用于Matroska格式视频的修复系统的框架图。该系统具体包括参考文件获取解析单元601、块集合获取单元602、有效帧集合获取单元603和修复单元604,其中,参考文件获取解析单元601配置用于获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;块集合获取单元602配置用于从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组;有效帧集合获取单元603配置用于遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合;修复单元604配置用于基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。
下面参考图7,其示出了适于用来实现本申请实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取与损坏文件具有相同音视频参数的参考文件,从参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;从损坏文件获取块集合,块集合包括存在连续有效的简单块和有效块组;遍历块集合,若通过参考文件判断块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于参考文件将有效帧存入有效帧集合;基于参考文件的视频帧率,设置有效帧集合中每一个视频帧的时间戳,依次写入音视频帧数据。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (13)
1.一种用于Matroska格式视频的修复方法,其特征在于,包括:
S1:获取与损坏文件具有相同音视频参数的参考文件,从所述参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;
S2:从所述损坏文件获取块集合,所述块集合包括存在连续有效的简单块和有效块组;
S3:遍历所述块集合,若通过所述参考文件判断所述块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于所述参考文件将有效帧存入有效帧集合;以及
S4:基于所述参考文件的视频帧率,设置所述有效帧集合中每一个所述视频帧的时间戳,依次写入音视频帧数据。
2.根据权利要求1所述的用于Matroska格式视频的修复方法,其特征在于,所述步骤S1中还包括解析所述参考文件的Segment及其所有子元素,获取track数、视频编码格式、视频图像分辨率。
3.根据权利要求1所述的用于Matroska格式视频的修复方法,其特征在于,所述步骤S2中简单块的获取具体包括:
S21:从损坏文件的偏移地址搜索简单块ID,若所述简单块ID有效,从所述偏移地址读取长度;
S22:判断所述长度与文件大小的关系,若所述长度大于文件大小,则所述简单块ID无效,若否,解析所述简单块的track号;
S23:判断所述track号与所述参考文件的track数的关系,若所述track号大于所述参考文件的track数,则所述简单块无效,若否,读取flag,解析lacing标志;
S24:若lancing≠0,则所述简单块无效,若否,且存在连续3个以上简单块且连续的简单块为有效块,将所述连续有效的简单块放入块集合中。
4.根据权利要求3所述的用于Matroska格式视频的修复方法,其特征在于,所述步骤S2中有效块组的获取具体包括:
从损坏文件的偏移地址搜索块组ID,若所述块组ID有效,从所述偏移地址读取长度,若所述长度大于文件大小,则所述块组ID无效,若否,依次解析所述块组的所有子元素,若所述所有子元素的大小之和与所述块组的大小相等,且获取到ID为0xA1的块的子元素则所述块组有效,将有效块组放入所述块集合。
5.根据权利要求4所述的用于Matroska格式视频的修复方法,其特征在于,所述简单块ID和所述块组ID的无效条件为ID的后一个字节为0。
6.根据权利要求1所述的用于Matroska格式视频的修复方法,其特征在于,所述步骤S3中基于所述参考文件将有效帧存入有效帧集合具体包括:
读取视频帧,对于已知视频编码格式的视频帧,根据所述参考文件的视频编码格式,与视频图像的分辨率判断所述视频帧是否有效:若所述参考文件的编码格式是VP8,且当前块标志isKey为1,若视频帧的起始码为0x9d012a且读取该帧的分辨率等于所述参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是VP9,且当前块标志isKey为1,若视频帧的起始码为0x498342且读取该帧的分辨率等于所述参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是H264/H265,且读取数据帧长度和块中的帧长一致,则该帧存入有效帧集合;如果参考文件编码格式是mpeg4,若视频帧的起始码为0x000001b0或0x000001b3或0x000001b6,则该帧存入有效帧集合。
7.一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施权利要求1至6任一项所述的方法。
8.一种用于Matroska格式视频的修复系统,其特征在于,所述系统包括:
参考文件获取解析单元,配置用于获取与损坏文件具有相同音视频参数的参考文件,从所述参考文件起始位置解析EBML Head获取EBML版本和文档类型信息;
块集合获取单元,配置用于从所述损坏文件获取块集合,所述块集合包括存在连续有效的简单块和有效块组;
有效帧集合获取单元:配置用于遍历所述块集合,若通过所述参考文件判断所述块集合中的块的目标编号不为视频轨道,则提取视频帧存入有效帧集合;若为视频轨道,基于所述参考文件将有效帧存入有效帧集合;
修复单元:配置用于基于所述参考文件的视频帧率,设置所述有效帧集合中每一个所述视频帧的时间戳,依次写入音视频帧数据。
9.根据权利要求8所述的用于Matroska格式视频的修复系统,其特征在于,所述参考文件获取解析单元还包括解析所述参考文件的Segment及其所有子元素,获取track数、视频编码格式、视频图像分辨率。
10.根据权利要求8所述的用于Matroska格式视频的修复系统,其特征在于,所述块集合获取单元中简单块的获取具体包括从损坏文件的偏移地址搜索简单块ID,若所述简单块ID有效,从所述偏移地址读取长度;判断所述长度与文件大小的关系,若所述长度大于文件大小,则所述简单块ID无效,若否,解析所述简单块的track号;判断所述track号与所述参考文件的track数的关系,若所述track号大于所述参考文件的track数,则所述简单块无效,若否,读取flag,解析lacing标志;若lancing≠0,则所述简单块无效,若否,且存在连续3个以上简单块且连续的简单块为有效块,将所述连续有效的简单块放入块集合中。
11.根据权利要求10所述的用于Matroska格式视频的修复系统,其特征在于,所述块集合获取单元中有效块组的获取具体包括从损坏文件的偏移地址搜索块组ID,若所述块组ID有效,从所述偏移地址读取长度,若所述长度大于文件大小,则所述块组ID无效,若否,依次解析所述块组的所有子元素,若所述所有子元素的大小之和与所述块组的大小相等,且获取到ID为0xA1的块的子元素则所述块组有效,将有效块组放入所述块集合。
12.根据权利要求11所述的用于Matroska格式视频的修复系统,其特征在于,所述简单块ID和所述块组ID的无效条件为ID的后一个字节为0。
13.根据权利要求12所述的用于Matroska格式视频的修复系统,其特征在于,有效帧集合获取单元中基于所述参考文件将有效帧存入有效帧集合具体包括:读取视频帧,对于已知视频编码格式的视频帧,根据所述参考文件的视频编码格式,与视频图像的分辨率判断所述视频帧是否有效:若所述参考文件的编码格式是VP8,且当前块标志isKey为1,若视频帧的起始码为0x9d012a且读取该帧的分辨率等于所述参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是VP9,且当前块标志isKey为1,若视频帧的起始码为0x498342且读取该帧的分辨率等于所述参考文件的分辨率,则该帧存入有效帧集合;如果参考文件编码格式是H264/H265,且读取数据帧长度和块中的帧长一致,则该帧存入有效帧集合;如果参考文件编码格式是mpeg4,若视频帧的起始码为0x000001b0或0x000001b3或0x000001b6,则该帧存入有效帧集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423300.7A CN114257840B (zh) | 2021-11-26 | 2021-11-26 | 一种用于Matroska格式视频的修复方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423300.7A CN114257840B (zh) | 2021-11-26 | 2021-11-26 | 一种用于Matroska格式视频的修复方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114257840A true CN114257840A (zh) | 2022-03-29 |
CN114257840B CN114257840B (zh) | 2024-03-19 |
Family
ID=80791280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111423300.7A Active CN114257840B (zh) | 2021-11-26 | 2021-11-26 | 一种用于Matroska格式视频的修复方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114257840B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117950903A (zh) * | 2024-03-21 | 2024-04-30 | 深圳软牛科技集团股份有限公司 | 一种损坏的WebP文件的修复方法、装置及相关组件 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103404146A (zh) * | 2013-03-11 | 2013-11-20 | 华为技术有限公司 | 视频文件修复方法及装置 |
KR101568680B1 (ko) * | 2014-07-16 | 2015-11-12 | 고려대학교 산학협력단 | 데이터 파편 분류를 이용한 데이터 복원 방법 |
CN108093299A (zh) * | 2017-12-22 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | Mp4损坏文件的修复方法及存储介质 |
US20200382754A1 (en) * | 2019-05-31 | 2020-12-03 | Medicapture, Inc. | Automatic video file repair method and system |
-
2021
- 2021-11-26 CN CN202111423300.7A patent/CN114257840B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103404146A (zh) * | 2013-03-11 | 2013-11-20 | 华为技术有限公司 | 视频文件修复方法及装置 |
KR101568680B1 (ko) * | 2014-07-16 | 2015-11-12 | 고려대학교 산학협력단 | 데이터 파편 분류를 이용한 데이터 복원 방법 |
CN108093299A (zh) * | 2017-12-22 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | Mp4损坏文件的修复方法及存储介质 |
US20200382754A1 (en) * | 2019-05-31 | 2020-12-03 | Medicapture, Inc. | Automatic video file repair method and system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117950903A (zh) * | 2024-03-21 | 2024-04-30 | 深圳软牛科技集团股份有限公司 | 一种损坏的WebP文件的修复方法、装置及相关组件 |
CN117950903B (zh) * | 2024-03-21 | 2024-06-04 | 深圳软牛科技集团股份有限公司 | 一种损坏的WebP文件的修复方法、装置及相关组件 |
Also Published As
Publication number | Publication date |
---|---|
CN114257840B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010566B2 (en) | Extended multimedia file structure and multimedia file producting method and multimedia file executing method | |
US7212726B2 (en) | System and method of processing MPEG streams for file index insertion | |
JP6475228B2 (ja) | コンテナフォーマットでのメディアファイルの構文を意識した操作 | |
US8340505B2 (en) | Method of processing audio-video data | |
CN111063376B (zh) | 一种mp4修复中音视频同步的方法、终端设备和存储介质 | |
US20190272452A1 (en) | Methods and apparatus for identifying objects depicted in a video using extracted video frames in combination with a reverse image search engine | |
KR20140044837A (ko) | 스트리밍 미디어 컨텐츠 모니터링 | |
CN110784750A (zh) | 视频播放方法、装置及计算机设备 | |
JP2021508995A (ja) | メディアファイルのネットワーク再生方法、装置及び記憶媒体 | |
CN102510519A (zh) | 流媒体数据的处理方法、播放方法以及装置 | |
US20200382754A1 (en) | Automatic video file repair method and system | |
CN114257840B (zh) | 一种用于Matroska格式视频的修复方法和系统 | |
US20120063749A1 (en) | Video file creation device and video file creation method | |
CN108833817B (zh) | 一种视频数据存储方法及装置 | |
US10979759B2 (en) | Analysis method, device and storage medium of moov box | |
CN110944197A (zh) | 一种图像、音频编码的方法和装置 | |
CN110851301B (zh) | 一种用于mp4文件的恢复方法和系统 | |
CN115495082B (zh) | Tlv格式数据自动转换方法及相关设备 | |
US20160142456A1 (en) | Method and Device for Acquiring Media File | |
CN104575542A (zh) | 一种实现音频区域播放的方法及装置 | |
US9070403B2 (en) | Processing of scalable compressed video data formats for nonlinear video editing systems | |
CN113691834B (zh) | 视频码流的处理方法、视频编码装置以及可读存储介质 | |
KR20120030007A (ko) | 영상 처리 장치 및 파일 관리 방법 | |
CN113660442B (zh) | 一种视频修复方法、装置、电子设备及可读介质 | |
CN115866254A (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 |