CN115334350A - 修复文件的方法、装置、终端设备及存储介质 - Google Patents

修复文件的方法、装置、终端设备及存储介质 Download PDF

Info

Publication number
CN115334350A
CN115334350A CN202210884374.9A CN202210884374A CN115334350A CN 115334350 A CN115334350 A CN 115334350A CN 202210884374 A CN202210884374 A CN 202210884374A CN 115334350 A CN115334350 A CN 115334350A
Authority
CN
China
Prior art keywords
frame
repaired
file
normal video
video 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.)
Pending
Application number
CN202210884374.9A
Other languages
English (en)
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.)
Guangdong Yuefang Technology Co ltd
Original Assignee
Guangdong Yuefang Technology 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 Guangdong Yuefang Technology Co ltd filed Critical Guangdong Yuefang Technology Co ltd
Priority to CN202210884374.9A priority Critical patent/CN115334350A/zh
Publication of CN115334350A publication Critical patent/CN115334350A/zh
Pending legal-status Critical Current

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/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/44008Processing 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
    • 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

Landscapes

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

Abstract

本申请属于电子数据修复领域,尤其涉及一种修复文件的方法、装置、终端设备及存储介质。包括:获取异常文件,异常文件中包含正常的视频帧和待修复帧;根据正常的视频帧,确定待修复帧的帧类型;根据帧类型修复待修复帧,得到修复帧;根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。整个修复过程中,无需人工干预,也无需解码器解码,即可实现自动修复,提升了修复文件的速度和效果。

Description

修复文件的方法、装置、终端设备及存储介质
技术领域
本申请属于电子数据修复领域,尤其涉及一种修复文件的方法、装置、终端设备及存储介质。
背景技术
随着科技的发展,音视频数据随处可见。例如,智能手机、行车记录仪、无人机、执法记录仪、硬盘录像机等设备,每天都会制作出大批量的音视频数据。将这些音视频数据封装为MP4格式的文件后存储。
其中,MP4全称MPEG-4Part 14,是一种常见的多媒体容器格式,现在大部分智能手机、行车记录仪、无人机、执法记录仪、硬盘录像机等设备都以MP4作为封装格式。
在文件存储的过程中,如果出现异常,文件就会损坏,这将导致文件中的重要信息丢失。传统修复文件的方法,是利用解码器进行修复,该过程需要人工干预,不仅耗时费力,而且修复效果差。
发明内容
有鉴于此,本申请实施例提供了一种修复文件的方法、装置、终端设备及存储介质,以解决传统修复文件的方法,是利用解码器进行修复,该过程需要人工干预,不仅耗时费力,而且修复效果差的技术问题。
本申请实施例的第一方面提供了一种修复文件的方法,可以包括:
获取异常文件,所述异常文件中包含正常的视频帧和待修复帧;
根据所述正常的视频帧,确定所述待修复帧的帧类型;
根据所述帧类型修复所述待修复帧,得到修复帧;
根据所述正常的视频帧、所述修复帧以及预设的配置文件,生成所述异常文件对应的修复文件。
可选地,在一种可能的实现方式中,所述正常的视频帧和所述待修复帧的数量均为多个,多个正常的视频帧和多个待修复帧交替排列,两个正常的视频帧之间有一个或多个待修复帧,所述根据所述正常的视频帧,确定所述待修复帧的帧类型,包括:
针对每个正常的视频帧,检测所述正常的视频帧中的标识信息,所述标识信息包括预设字节,所述预设字节的数量表示所述待修复帧为音频帧的数量;
当检测到所述标识信息时,确定所述待修复帧的帧类型为音频帧类型。
可选地,在一种可能的实现方式中,所述针对每个正常的视频帧,检测所述正常的视频帧中的标识信息之后,所述方法还包括:
当未检测到所述标识信息时,判断第一待修复帧与所述正常的视频帧是否相似,所述第一待修复帧为所述正常的视频帧后的第一个待修复帧;
当判定所述第一待修复帧与所述正常的视频帧不相似时,确定所述第一待修复帧的帧类型为所述音频帧类型;或,当判定所述第一待修复帧与所述正常的视频帧相似时,确定所述第一待修复帧的帧类型为视频帧类型;
判断第二待修复帧与所述正常的视频帧是否相似,并根据判断结果确定所述第二待修复帧的帧类型,所述第二待修复帧为与所述第一待修复帧相邻的待修复帧。
可选地,在一种可能的实现方式中,所述当未检测到所述标识信息时,判断第一待修复帧与所述正常的视频帧是否相似,包括:
当未检测到所述标识信息时,获取所述第一待修复帧中的第一目标字节;
根据所述第一目标字节生成所述第一待修复帧的帧长度;
当所述帧长度大于或等于预设阈值时,判定所述第一待修复帧与所述正常的视频帧不相似。
可选地,在一种可能的实现方式中,所述根据所述第一目标字节生成所述第一待修复帧的帧长度之后,所述方法还包括:
当所述帧长度小于所述预设阈值时,获取所述第一待修复帧中的第二目标字节,所述第二目标字节用于表示所述第一待修复帧的帧类型对应的值;
若检测到所述第二目标字节在预设取值范围内,则判定所述第一待修复帧与所述正常的视频帧相似;或,
若检测到所述第二目标字节不在预设取值范围内,则判定所述第一待修复帧与所述正常的视频帧不相似。
可选地,在一种可能的实现方式中,所述待修复帧包含媒体数据,所述根据所述帧类型修复所述待修复帧,得到修复帧,包括:
获取所述待修复帧的起始地址;
根据所述帧类型确定所述待修复帧的目标帧长度;
根据所述起始地址、所述目标帧长度以及所述媒体数据,生成所述修复帧。
可选地,在一种可能的实现方式中,所述方法还包括:
当检测到所述异常文件的后缀名为预设后缀名时,确定产生所述异常文件的故障原因为异常中断。
可选地,在一种可能的实现方式中,所述获取异常文件之前,所述方法还包括:
在存储正常文件的过程中,确定第一视频帧和第二视频帧,所述第二视频帧存储在所述第一视频帧之后,所述第一视频帧和所述第二视频帧之间存储有一个或多个音频帧;
针对每个音频帧,判断所述音频帧与所述第一视频帧是否相似;
若判定所述音频帧与所述第一视频帧相似,则在所述第一视频帧中添加标识信息。
本申请实施例的第二方面提供了一种修复文件的装置,可以包括:
获取单元,用于获取异常文件,所述异常文件中包含正常的视频帧和待修复帧;
确定单元,用于根据所述正常的视频帧,确定所述待修复帧的帧类型;
修复单元,用于根据所述帧类型修复所述待修复帧,得到修复帧;
生成单元,用于根据所述正常的视频帧、所述修复帧以及预设的配置文件,生成所述异常文件对应的修复文件。
本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面提供的修复文件的方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述第一方面提供的修复文件的方法的步骤。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面提供的修复文件的方法的步骤。
本申请提供的方案,通过获取异常文件,异常文件中包含正常的视频帧和待修复帧;根据正常的视频帧,确定待修复帧的帧类型;根据帧类型修复待修复帧,得到修复帧;根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。整个修复过程中,无需人工干预,也无需解码器解码,即可实现自动修复,提升了修复文件的速度和效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一示例性实施例提供的数据存储格式示意图;
图2示出了本申请一个实施例提供的修复文件的方法的流程图;
图3是本申请一示例性实施例提供的异常文件中数据存储格式示意图;
图4是本申请另一示例性实施例示出的一种修复文件的方法的步骤S103的具体流程图;
图5是本申请一实施例提供的一种修复文件的装置的示意图;
图6是本申请另一实施例提供的一种终端设备的示意图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
随着科技的发展,音视频数据随处可见。例如,智能手机、行车记录仪、无人机、执法记录仪、硬盘录像机等设备,每天都会制作出大批量的音视频数据。将这些音视频数据封装为MP4格式的文件后存储。
其中,MP4全称MPEG-4Part 14,是一种常见的多媒体容器格式,现在大部分智能手机、行车记录仪、无人机、执法记录仪、硬盘录像机等设备都以MP4作为封装格式。
在文件存储的过程中,如果出现异常,文件就会损坏,这将导致文件中的重要信息丢失。例如,在监控安防领域,如果发生异常断电的情况,就会造成文件损坏,导致文件中的重要信息丢失。
在监控安防领域中,音视频数据(指音频数据和视频数据)存储有独特的存储格式。例如,视频数据格式主要为数字视频压缩格式(H264)和数字视频压缩格式(H265)。其中,H264又称H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。
H265又称H.265,H.265是ITU-T VCEG继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。
音频数据格式主要为Gxx系列音频编码格式,如G711和G726。其中,G711又称G.711,是一种由国际电信联盟(ITU-T)制定的音频编码方式,也可称为ITU-T G.711。G726又称G.726,是ITU-T定义的音频编码算法。
在存储这些音视频数据时,通常是将录制的音视频数据先写入磁盘上的文件内,录制完成之后在文件尾部按照MP4协议标准添加MP4文件基本信息。其中,MP4文件基本信息在本文中也称为媒体信息头,该媒体信息头可以包括音频数据的相关信息和视频数据的相关信息,通过查找识别每个MP4文件的媒体信息头,可以得到该文件解码所需的信息。
音频数据的相关信息可以包括声道、采样率、每一帧音频的长度(即每个音频帧的长度)、每一帧音频的存储位置(每个音频帧的存储位置)等。其中,每一帧音频的存储位置可以包括每一帧音频的起始地址和结束地址,即每个音频帧的起始地址和结束地址。
视频数据的相关信息可以包括分辨率、时长、每一帧视频的长度(每个视频帧的长度)、每一帧视频的存储位置(每个视频帧的存储位置)等。其中,每一帧视频的存储位置可以包括每一帧视频的起始地址和结束地址,即每个视频帧的起始地址和结束地址。
先保存音视频数据,后保存媒体信息头,这样就必须保证在整个文件存储过程中不能出现中断。如果发生异常(如异常中断)中断了录制过程,会造成媒体信息头无法正确保存,最终导致播放器无法播放视频。
请参见图1,图1是本申请一示例性实施例提供的数据存储格式示意图。如图1所示,视频帧与音频帧交替排列,文件开头包含文件头,文件尾部包含信息头(即媒体信息头)。文件头包含了文件格式的基本信息,如音频数据的编码格式、视频数据的编码格式以及整个文件的封装格式等。
其中,视频帧由视频帧同步码、视频帧NAL头以及视频裸流数据构成,而音频帧没有头信息,仅仅由音频裸流数据(如音频RAW数据)构成。图1仅为示例,在两个视频帧之间可能包含一个或多个音频帧,也可能不包含音频帧。如果发生异常(如异常中断)中断了录制过程,会造成媒体信息头无法正确保存,也就无法知道各个音频帧和视频帧的存储位置、长度等信息,进而导致该文件无法正常播放。
为了避免上述这种情况发生,一般采用小文件存储的方法。如在音视频数据的存储过程中,将音视频数据按固定时间(如N秒)切割,划分为若干个小文件。这样在发生异常时,仅仅会损失N秒的数据。但对于监控安防领域来说,每一秒数据都很重要,即使是一秒的数据,也可能会包含非常重要的信息。为了进一步减少数据丢失的风险,常用的解决方法有两种。
一种属于前处理,即在发生异常前进行的处理。前处理中会先写入初始媒体信息头,然后在音视频数据写入后,实时更新媒体信息头,并写回磁盘。其中,初始媒体信息头和媒体信息头类似,只是对于音频数据,没有每一帧音频的长度和存储位置,对于视频数据,没有每一帧视频的长度和存储位置。更新媒体信息头,就是将初始媒体信息头中没有的这些信息更新进去。
另一种属于后处理,即在发生异常后进行的处理,也就是异常文件的修复。后处理中通过磁盘上的其他文件,人工猜测异常文件可能采用的编码格式,再利用解码器(如音视频解码器)进行解码。如果能正常解码,证明猜测正确,从而实现了对异常文件的修复;如果不能正常解码,证明猜测错误,无法实现对异常文件的修复。
这两种解决方法中,前者每存储一帧音视频数据就需要实时更新一次媒体信息头,直接导致能耗增加,且发生异常毕竟属于小概率事件,这就使得实时更新在大多时间都属于无效保护。再者,整个过程需要频繁进行写磁盘操作,对磁盘的损耗巨大。后者需要人工干预,再利用解码器进行修复,不仅耗时费力,而且修复效果差。
有鉴于此,本申请提供了一种修复文件的方法,该方法包括:获取异常文件,异常文件中包含正常的视频帧和待修复帧;根据正常的视频帧,确定待修复帧的帧类型;根据帧类型修复待修复帧,得到修复帧;根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。整个修复过程中,无需人工干预,也无需解码器解码,即可实现自动修复,提升了修复文件的速度和效果。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
请参阅图2,图2示出了本申请一个实施例提供的修复文件的方法的流程图。在具体的实施例中,修复文件的方法可以由具备处理能力的终端设备执行,终端设备可以包括移动终端设备(例如,手机、掌上电脑(Personal Digital Assistant,PDA)、平板电脑(Tablet Personal Computer,Tablet PC)笔记本电脑、智能手表、智能手环等)以及固定终端设备(例如,台式计算机、智能控制面板等)等。终端设备也可以包括各种类型的服务器,例如,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务。
如图2所示,修复文件的方法可以包括步骤S101至步骤S104。
S101:获取异常文件。
在本申请实施例中,异常文件可以是监控安防领域(如视频监控领域)产生的异常文件。如智能手机、行车记录仪、无人机、执法记录仪、硬盘录像机等设备在存储音视频数据的过程中发生了异常,所产生的异常文件。
示例性地,对产生异常文件的故障原因不做限定。例如,故障原因可以是异常中断、设备故障、网络异常等。其中,异常中断可以包括异常断电。本示例中以故障原因为异常中断为例进行说明。
异常文件中包含正常的视频帧和待修复帧。正常的视频帧指在异常文件中可以被快速、准确识别到的视频帧。为了便于异常文件的修复,在存储音视频数据时,通常会保证存储的第一帧数据为视频帧,因此,可以直接确定异常文件中的第一帧数据为正常的视频帧。
可选地,在一种可能的实现方式中,异常文件中包含一个正常的视频帧和一个待修复帧,此时,异常文件中的第一帧数据即为正常的视频帧,第二针数据为待修复帧。
可选地,在一种可能的实现方式中,异常文件中包含一个正常的视频帧和多个待修复帧。请参见图3,图3是本申请一示例性实施例提供的异常文件中数据存储格式示意图。如图3所示,异常文件中的第一帧数据即为正常的视频帧,其余数据为多个待修复帧。
可选地,在一种可能的实现方式中,异常文件中包含多个正常的视频帧和多个待修复帧。这种实现方式中,除了将异常文件中的第一帧数据确定为正常的视频帧外,还将修复文件的过程中,修复待修复帧得到的视频帧确定为正常的视频帧。此处仅为示例性说明,对此不做限定。
S102:根据正常的视频帧,确定待修复帧的帧类型。
帧类型可以包括视频帧类型和音频帧类型。若待修复帧的帧类型为视频帧类型,则证明该待修复帧为视频帧;若待修复帧的帧类型为音频帧类型,则证明该待修复帧为音频帧。
可选地,在一种可能的实现方式中,检测该正常的视频帧中是否包含标识信息,若检测到该正常的视频帧中包含标识信息,则将待修复帧的帧类型确定为音频帧类型。若检测到该正常的视频帧中未包含标识信息,则判断待修复帧与该正常的视频帧是否相似。若判定待修复帧与该正常的视频帧相似,则将待修复帧的帧类型确定为视频帧类型;若判定待修复帧与该正常的视频帧不相似,则将待修复帧的帧类型确定为音频帧类型。
可选地,在一种可能的实现方式中,也可以是检测该正常的视频帧后面是否有标识信息,若检测到该正常的视频帧后面有标识信息,则将待修复帧的帧类型确定为音频帧类型。若检测到该正常的视频帧后面没有标识信息,则判断待修复帧与该正常的视频帧是否相似。若判定待修复帧与该正常的视频帧相似,则将待修复帧的帧类型确定为视频帧类型;若判定待修复帧与该正常的视频帧不相似,则将待修复帧的帧类型确定为音频帧类型。
示例性地,若异常文件中包含一个正常的视频帧和一个待修复帧。若检测到该正常的视频帧中包含标识信息,则将该待修复帧的帧类型确定为音频帧类型。若检测到该正常的视频帧中未包含标识信息,则判断该待修复帧与该正常的视频帧是否相似。若判定该待修复帧与该正常的视频帧相似,则将该待修复帧的帧类型确定为视频帧类型;若判定该待修复帧与该正常的视频帧不相似,则将该待修复帧的帧类型确定为音频帧类型。若异常文件中包含一个正常的视频帧和多个待修复帧,通过上述方式,依次确定每个待修复帧的帧类型。
S103:根据帧类型修复待修复帧,得到修复帧。
示例性地,修复待修复帧的实质就是确定待修复帧的目标帧长度和存储位置。其中,存储位置包括待修复帧的起始地址和结束地址,可以理解的是,当确定待修复帧的目标帧长度和起始地址后,可以计算出待修复帧的结束地址。
当待修复帧的帧类型为视频帧类型时,对该待修复帧进行修复,得到修复好的视频帧即为该修复帧;当待修复帧的帧类型为音频帧类型时,对该待修复帧进行修复,得到修复好的音频帧即为该修复帧。
请参见图4,图4是本申请另一示例性实施例示出的一种修复文件的方法的步骤S103的具体流程图;可选地,在本申请一些可能的实现方式中,上述步骤S103可包括步骤S1031至步骤S1033,具体如下:
S1031:获取待修复帧的起始地址。
S1032:根据帧类型确定待修复帧的目标帧长度。
S1033:根据起始地址、目标帧长度以及媒体数据,生成修复帧。
在本实施方式中,充分利用了音视频数据的存储特性。例如,视频帧由视频帧同步码、视频帧NAL头以及视频裸流数据构成,在存储视频帧时,会将视频帧同步码替换为帧长度字段,本示例中用第一目标字节表示帧长度字段。也就是说,若待修复帧的帧类型为视频帧类型时,获取该待修复帧的第一目标字节,即可得到待修复帧的目标帧长度。
又例如,音频帧没有头信息,仅仅由音频裸流数据(如音频RAW数据)构成,但是音频帧为固定帧长编码,即输出长度固定,如采用32字节固定采样间隔。也就是说,若待修复帧的帧类型为音频帧类型时,可直接确定待修复帧的目标帧长度。
示例性地,若当前待修复帧的前一帧数据为正常的视频帧,则该正常的视频帧的起始地址是已知的,获取该正常的视频帧中的第一目标字节可以得到正常的视频帧的帧长度,通过正常的视频帧的起始地址和帧长度可以计算出正常的视频帧的结束地址。确定了该正常的视频帧的结束地址,将该结束地址偏移一位即得到待修复帧的起始地址。
若待修复帧的帧类型为视频帧类型,获取该待修复帧的第一目标字节,得到待修复帧的目标帧长度。若待修复帧的帧类型为音频帧类型,根据音视频数据的存储特性,可直接确定待修复帧的目标帧长度,如32字节。
通过该待修复帧的起始地址和目标帧长度计算出该待修复帧的结束地址,将该结束地址偏移一位即得到下一个待修复帧的起始地址。反复执行此过程,即可得到每个待修复帧的目标帧长度、起始地址以及结束地址。
待修复帧中包含媒体数据。当待修复帧的帧类型为视频帧类型时,媒体数据为视频裸流数据;当待修复帧的帧类型为音频帧类型时,媒体数据为音频裸流数据。
可选地,在一种可能的实现方式中,根据起始地址、目标帧长度以及媒体数据生成修复帧,可以是确定待修复帧的起始地址和目标帧长度后,将该待修复帧的媒体数据准确地提取出来,得到的数据即为该修复帧。例如,两个相邻的待修复帧均为音频帧,此时这两个待修复帧在文件中存储时,是两段音频裸流数据紧挨着存储,确定每个待修复帧的起始地址和目标帧长度后,可以将每个待修复帧的音频裸流数据准确地提取出来。同时,在文件尾部的信息头(即媒体信息头)中恢复每个待修复帧的起始地址和目标帧长度。
可选地,在一种可能的实现方式中,由于修复待修复帧的实质就是确定待修复帧的目标帧长度和存储位置,根据起始地址、目标帧长度以及媒体数据生成修复帧,可以是直接在文件尾部的信息头(即媒体信息头)中恢复每个待修复帧的起始地址和目标帧长度。此处仅为示例性说明,对此不做限定。
本实施方式中,充分利用了音视频数据的存储特性,根据视频帧和音频帧的存储特征,快速确定待修复帧的起始地址和目标帧长度,从而不需要人工干预,就可自动修复每个待修复帧,进而提升了修复文件的速度和效果。
S104:根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。
示例性地,预设的配置文件可以是在录制的过程中存储的,也可以是在录制之前存储的。该配置文件中可以包括音频数据的编码格式、视频数据的编码格式、整个文件的封装格式、音频数据的声道和采样率、视频数据的分辨率和时长等。
本实施方式中,在存储文件时采用小文件存储的方法。如在音视频数据的存储过程中,将音视频数据按固定时间切割,划分为若干个小文件,每段小文件的格式是一致的。这样在修复异常文件的过程中,可以通过该配置文件直接恢复除音视频数据的长度和存储位置以外的其他信息。例如,可以通过该配置文件恢复文件头,恢复信息头(即媒体信息头)中音频数据的声道和采样率,恢复视频数据的分辨率和时长等。
示例性地,根据预设的配置文件恢复了异常文件中,除音视频数据的长度和存储位置以外的其他信息,在根据帧类型修复待修复帧时,恢复了音频帧和视频帧的目标帧长度、存储位置。将恢复的文件头添加至异常文件的开头,将信息头(即媒体信息头)添加至异常文件的结尾,得到异常文件对应的修复文件。
可选地,在一种可能的实现方式中,也可以是根据预设的配置文件恢复了异常文件中,除音视频数据的长度和存储位置以外的其他信息。根据正常的视频帧和修复帧的存储位置,依次顺序存储各个正常的视频帧和修复帧,得到新的文件。将恢复的文件头添加至新的文件的开头,将信息头(即媒体信息头)添加至新的文件的结尾,得到异常文件对应的修复文件。此处仅为示例性说明,对此不做限定。
本实施方式中,通过获取异常文件,异常文件中包含正常的视频帧和待修复帧;根据正常的视频帧,确定待修复帧的帧类型;根据帧类型修复待修复帧,得到修复帧;根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。整个修复过程中,充分利用了音视频数据的存储特性,通过判断正常的视频帧与待修复帧之间是否相似,快速判断出待修复帧的帧类型,再根据不同帧类型的特点,快速确定待修复帧的起始地址和目标帧长度,从而不需要人工干预,也无需解码器解码,就可自动修复每个待修复帧,基于正常的视频帧、修复帧以及预设的配置文件,生成修复文件,提升了修复文件的速度和效果。
可选地,在本申请一些可能的实现方式中,正常的视频帧和待修复帧的数量均为多个,多个正常的视频帧和多个待修复帧交替排列,两个正常的视频帧之间有一个或多个待修复帧。这种实现方式中,除了将异常文件中的第一帧数据确定为正常的视频帧外,还将修复文件的过程中,修复待修复帧得到的视频帧确定为正常的视频帧。每一个被确定为正常的视频帧的数据,可用于确定该正常的视频帧后的待修复帧为音频帧还是视频帧。可以理解为,每一个被确定为正常的视频帧的数据,可用于修复该正常的视频帧后的待修复帧。
例如,由于在存储文件的过程中,保证了第一帧数据存储的是视频帧,因此直接将该异常文件中的第一帧数据确定为正常的视频帧。基于该正常的视频帧可以确定该正常的视频帧后的待修复帧(第二帧数据)为音频帧还是视频帧。如确定该待修复帧为音频帧,继续基于该正常的视频帧确定该正常的视频帧后的待修复帧(第三帧数据)为音频帧还是视频帧。如确定该待修复帧为视频帧,将该视频帧确定为正常的视频帧,此时该正常的视频帧为第三帧数据,基于该正常的视频帧(第三帧数据),确定其后的待修复帧(第四帧数据)为音频帧还是视频帧,并以此类推,直至将异常文件处理完毕。
上述步骤S102可包括步骤S1021至步骤S1022,具体如下:
S1021:针对每个正常的视频帧,检测正常的视频帧中的标识信息。
S1022:当检测到标识信息时,确定待修复帧的帧类型为音频帧类型。
示例性地,标识信息用于标识该正常的视频帧后是否有音频帧。例如,若正常的视频帧中有标识信息,则表示该正常的视频帧后有音频帧。值得说明的是,若正常的视频帧中没有标识信息,不一定表示该正常的视频帧后没有音频帧。也就是说,若正常的视频帧中没有标识信息,该正常的视频帧后可能有音频帧,有可能没有音频帧。
标识信息可以包括预设字节,预设字节的数量表示待修复帧为音频帧的数量。预设字节由用户根据实际情况进行设置、调整。为了避免预设字节影响解码,可以将预设字节设置为0字节,0字节对于视频帧来说属于冗余字节,不会影响该视频帧的解码。有多少个0字节就表示该正常的视频帧后面有多少个音频帧。
例如,针对该正常的视频帧,检测到该正常的视频帧中有0字节,首先确定该正常的视频帧后的待修复帧为音频帧,即确定该正常的视频帧后的待修复帧的帧类型为音频帧类型。检测到有3个0字节,确定该正常的视频帧后有三个音频帧,即确定该正常的视频帧后的三个待修复帧的帧类型均为音频帧类型。此处仅为示例性说明,对此不做限定。
本实施方式中,若检测到正常的视频帧中有标识信息,即可快速确定该正常的视频帧后的待修复帧的帧类型为音频帧类型,即可快速确定该正常的视频帧后的待修复帧为音频帧。确定帧类型后,后续可以根据音视频数据的存储特性,快速确定音频帧的目标帧长度,进而提升了修复文件的速度。
可选地,在本申请一些可能的实现方式中,步骤S1021之后还可包括步骤S1023至步骤S1025,具体如下:
S1023:当未检测到标识信息时,判断第一待修复帧与正常的视频帧是否相似。
第一待修复帧为正常的视频帧后的第一个待修复帧。
示例性地,若在正常的视频帧中没有检测到标识信息,不一定表示该正常的视频帧后没有音频帧。此时,需要判断第一待修复帧与正常的视频帧是否相似,即判断正常的视频帧后的第一个待修复帧与该正常的视频帧是否相似。
S1024:当判定第一待修复帧与正常的视频帧不相似时,确定第一待修复帧的帧类型为音频帧类型;或,当判定第一待修复帧与正常的视频帧相似时,确定第一待修复帧的帧类型为视频帧类型。
示例性地,正常的视频帧为视频帧,若判定结果为第一待修复帧与正常的视频帧不相似,证明第一待修复帧与视频帧差异大,则确定第一待修复帧的帧类型为音频帧类型,即确定第一待修复帧为音频帧。若判定结果为第一待修复帧与正常的视频帧相似,证明第一待修复帧与视频帧差异小,则确定第一待修复帧的帧类型为视频帧类型,即确定第一待修复帧为视频帧。
S1025:判断第二待修复帧与正常的视频帧是否相似,并根据判断结果确定第二待修复帧的帧类型,第二待修复帧为与第一待修复帧相邻的待修复帧。
第二待修复帧是正常的视频帧后的第二个待修复帧,也是与第一待修复帧相邻的待修复帧。当第一待修复帧为音频帧时,同样判断第二待修复帧与正常的视频帧是否相似,若判定结果为第二待修复帧与正常的视频帧不相似,证明第二待修复帧与视频帧差异大,则确定第二待修复帧的帧类型为音频帧类型,即确定第二待修复帧为音频帧。若判定结果为第二待修复帧与正常的视频帧相似,证明第二待修复帧与视频帧差异小,则确定第二待修复帧的帧类型为视频帧类型,即确定第二待修复帧为视频帧。
值得说明的是,当第一待修复帧为视频帧时,将该视频帧确定为正常的视频帧,此时对于第二待修复帧的判断,应该基于该新确定的正常的视频帧进行。即判断第二待修复帧与该新确定的正常的视频帧是否相似,若相似,则确定第二待修复帧的帧类型为视频帧类型,即确定第二待修复帧为视频帧;若不相似,则确定第二待修复帧的帧类型为音频帧类型,即确定第二待修复帧为音频帧。
以此类推,对每个待修复帧都进行上述处理,得到每个待修复帧的帧类型。此处仅为示例性说明,对此不做限定。
本实施方式中,若检测到正常的视频帧中没有标识信息,进一步判断待修复帧与正常的视频帧是否相似,并根据判断结果确定待修复帧的帧类型为音频帧类型还是视频帧类型,即确定待修复帧为音频帧还是视频帧。确定帧类型后,后续可以根据音视频数据的存储特性,快速确定音频帧和视频帧的目标帧长度,进而提升了修复文件的速度。
可选地,在本申请一些可能的实现方式中,上述步骤S1023可以包括步骤S10231至步骤S10233,具体如下:
S10231:当未检测到标识信息时,获取第一待修复帧中的第一目标字节。
S10232:根据第一目标字节生成第一待修复帧的帧长度。
S10233:当帧长度大于或等于预设阈值时,判定第一待修复帧与正常的视频帧不相似。
示例性地,第一目标字节表示帧长度字段,本实施方式中的第一目标字节可以为第一待修复帧中的前4个字节。若最后判定该第一待修复帧为视频帧,则该第一目标字节就表示该视频帧的目标帧长度。
预设阈值由用户根据实际情况预先设置。其中,预设阈值的设置可以和图像的高、宽以及格式(如格式可以为YUV420或者YUV422)有关。例如,预设阈值可以设置为RAW图像数据一帧原始长度,如格式为YUV420时,则预设阈值为RAW图像数据的高*宽的2/3。这样设置的作用是,如果待修复帧为视频帧,通过视频压缩处理,得到的桢长度一定小于原始图像一帧长度。
示例性地,当未检测到标识信息时,获取第一待修复帧的前4个字节,根据获取到的前4个字节组成帧长度,该帧长度用于表示第一待修复帧的帧长度。将该帧长度与预设阈值比较,根据比较结果判定第一待修复帧与正常的视频帧是否相似。若帧长度大于或等于预设阈值,则该待修复帧与正常的视频帧的相似度为0,判定第一待修复帧与正常的视频帧不相似。此时,确定第一待修复帧的帧类型为音频帧类型,即确定第一待修复帧为音频帧。
本实施方式中,将待修复帧的帧长度与预设阈值比较,判断待修复帧与正常的视频帧的相似度,从而确定待修复帧与正常的视频帧是否相似。由于预设阈值是根据图像的相关数据设置得到的,因此,与该预设阈值比较可以准确地判断出待修复帧与正常的视频帧是否相似,有利于后续准确地确定待修复帧的帧类型。
可选地,在本申请一些可能的实现方式中,上述步骤S10232之后还可以包括步骤S10234至步骤S10236,具体如下:
S10234:当帧长度小于预设阈值时,获取第一待修复帧中的第二目标字节。
S10235:若检测到第二目标字节在预设取值范围内,则判定第一待修复帧与正常的视频帧相似。
S10236:若检测到第二目标字节不在预设取值范围内,则判定第一待修复帧与正常的视频帧不相似。
示例性地,将该帧长度与预设阈值比较,为了保证最终判定的第一待修复帧与正常的视频帧相似或不相似的结果准确,当帧长度小于预设阈值时,获取第一待修复帧中的第二目标字节。第二目标字节用于表示第一待修复帧的帧类型对应的值,本实施方式中的第二目标字节可以为第一待修复帧中的第5个字节。通俗的讲,可以通过第二目标字节判断第一待修复帧中是否存在合理的帧类型。
预设取值范围由用户根据实际情况预先设置。检测第二目标字节是否在预设取值范围内,若检测到第二目标字节在预设取值范围内,证明第一待修复帧与正常的视频帧的相似度为1,此时判定第一待修复帧与正常的视频帧相似;若检测到第二目标字节不在预设取值范围内,证明第一待修复帧与正常的视频帧的相似度为0,此时判定第一待修复帧与正常的视频帧不相似。
可选地,在一种可能的实现方式中,也可以是对第5个字节进行运算,检测运算结果是否在预设取值范围内,若检测到运算结果在预设取值范围内,说明第一待修复帧中包含合理的帧类型,第一待修复帧与正常的视频帧的相似度为1,此时判定第一待修复帧与正常的视频帧相似;若检测到运算结果不在预设取值范围内,说明第一待修复帧中未包含合理的帧类型,第一待修复帧与正常的视频帧的相似度为0,此时判定第一待修复帧与正常的视频帧不相似。
例如,假设第5个字节为A,对于H264码流,帧类型对应的值为A&0x1f,按照H264码流标准,预设取值范围为该运算结果大于0,且小于13。其中,0x1f表示0001 1111,A&0x1f表示A与0001 1111按相位进行与运算。对于H265码流,帧类型对应的值为(A&0x7E)>>1,按照H265码流标准,预设取值范围为该运算结果大于或等于0,且小于或等于40。此处仅为示例性说明,对此不做限定。
本实施方式中,在利用预设阈值判断待修复帧与正常的视频帧是否相似的基础上,进一步判断待修复帧中是否包含合理的帧类型,根据判断结果准确地判断出待修复帧与正常的视频帧是否相似,提升了准确度,有利于后续准确地确定待修复帧的帧类型。
可选地,在本申请一些可能的实现方式中,本申请还提供了一种存储文件的方法,该方法可以在图2对应的实施例之前执行。具体地,在存储正常文件的过程中,确定第一视频帧和第二视频帧,第二视频帧存储在第一视频帧之后,第一视频帧和第二视频帧之间存储有一个或多个音频帧;针对每个音频帧,判断音频帧与第一视频帧是否相似;若判定音频帧与第一视频帧相似,则在第一视频帧中添加标识信息。
示例性地,在存储正常文件的过程中,保证该文件的第一帧为视频帧,将该视频帧确定为第一视频帧。继续存储音视频数据,在存储音视频数据的过程中是可以知道下一帧存储的数据属于视频帧还是属于音频帧的。又检测到存储的某一帧数据为视频帧,且该视频帧与第一视频帧之间存储了一个或多个音频帧时,将该视频帧确定为第二视频帧。
针对第一视频帧和第二视频帧之间存储的每个音频帧,将该音频帧与第一视频帧进行相似度比较,进而判断音频帧与第一视频帧是否相似。值得说明的是,判断音频帧与第一视频帧是否相似的过程与上述判断第一待修复帧与正常的视频帧是否相似的过程类似。
例如,获取该音频帧的前4个字节,根据获取到的前4个字节组成帧长度,将该帧长度与预设阈值比较,根据比较结果判定音频帧与第一视频帧是否相似。若帧长度大于或等于预设阈值,则该音频帧与第一视频帧的相似度为0,判定音频帧与第一视频帧不相似。证明后续即使该文件出现了异常,通过这种判断相似的方式,也可直接确定出该帧为音频帧。
若帧长度小于预设阈值,获取音频帧的第5个字节,对第5个字节进行运算,检测运算结果是否在预设取值范围内,若检测到运算结果不在预设取值范围内,说明音频帧中未包含合理的帧类型,音频帧与第一视频帧的相似度为0,此时判定音频帧与第一视频帧不相似。证明后续即使该文件出现了异常,通过这种判断方式,也可确定出该帧为音频帧。
若检测到运算结果在预设取值范围内,说明音频帧中包含合理的帧类型,音频帧与第一视频帧的相似度为1,此时判定音频帧与第一视频帧相似。由于该音频帧与第一视频帧极其相似,也就是说,后续如果该文件出现了异常,不容易判断出该帧是音频帧。此时,在第一视频帧中添加标识信息,如添加预设字节(如0字节),也可以在第一视频帧后面添加标识信息。1个0字节代表一个音频帧,如果存在多个音频帧,则添加相同数量的0字节。此处仅为示例性说明,对此不做限定。
值得说明的是,存储音视频数据是个不断存储的过程,第一视频帧和第二视频帧的确定也随之而变。例如,上述例子中的第一视频帧和第二视频帧之前的音频帧处理结束后,第二视频帧被确定为新的第一视频帧,第二视频帧后面的视频帧被确定为新的第二视频帧,再反复执行上述判断相似、添加标识信息等处理过程,直至整个存储过程结束。
本实施方式中,在存储正常文件的过程中,检测到音频帧与视频帧相似时,在视频帧中添加标识信息,即使后续出现了异常,该正常文件变成了异常文件,也可以通过标识信息快速确定该待修复帧的帧类型为音频帧类型,即快速确定该待修复帧为音频帧。为修复文件提供了保障,提升了修复文件的速度。且在存储正常文件的过程中,不需要对磁盘频繁的进行写操作,有效减少了磁盘的损耗。
为了便于理解,以下述场景为例进行说明。示例性地,在存储正常文件之前,可以预先设置一个全局的配置文件,该配置文件中可以包括音频数据的编码格式、视频数据的编码格式、整个文件的封装格式、音频数据的声道和采样率、视频数据的分辨率和时长等。
在存储正常文件的过程中,检查存储设置是否有变更,如检查编码方式、封装格式、存储地址等是否改变。如果存储设置发生了改变,根据变更后的存储设置更新配置文件。如果存储设置没有发生改变,此时创建临时媒体数据文件,并设置预设后缀名,如预设后缀名可以设置为.media.tmp。
从网口、通用串行总线(Universal Serial Bus,USB)口、软硬编码器等地方获取音视频数据,音视频数据进入数据结构队列(如FIFO队列)。此时,判断FIFO队列中是否包含两帧视频帧,如果FIFO队列中包含两帧视频帧,判断两帧视频帧之间是否包含音频帧。
如果两帧视频帧之间包含音频帧,将两帧视频帧之间的每个音频帧,都与两帧视频帧中的第一帧视频帧进行相似度对比。如果每个音频帧都与该第一帧视频帧的相似度为0,将FIFO队列中第二帧视频帧前的所有音视频数据按照FIFO队列原则分别写入存储系统。判断是否存储过程是否结束,若结束,存储FIFO队列中所有剩余的数据。将临时媒体数据文件后缀名改为.mp4,完成整个存储过程。存储期间,对于视频帧,将视频帧同步码替换为帧长度字段。
如果音频帧与该第一帧视频帧的相似度为1,计算FIFO队列中音频帧的个数,在第一视频帧中或第一视频帧后填充同样个数的0字节。将FIFO队列中第二帧视频帧前的所有音视频数据按照FIFO队列原则分别写入存储系统。判断是否存储过程是否结束,若结束,存储FIFO队列中所有剩余的数据。将临时媒体数据文件后缀名改为.mp4,完成整个存储过程。
可选地,在本申请一些可能的实现方式中,还可通过检测异常文件的后缀名,判断异常文件的故障原因。具体地,当检测到异常文件的后缀名为预设后缀名时,确定产生异常文件的故障原因为异常中断。
示例性地,预设后缀名为用户在存储正常文件过程中为临时媒体数据文件设置的后缀名,当出现异常时,由于还没来得及更改该后缀名,就因为异常导致正在存储的文件变为了异常文件,此时异常文件中保留了预设后缀名。因此,通过检测预设后缀名,可以判断出异常文件的故障原因。
例如,检测异常文件的后缀名是否为.media.tmp,若异常文件的后缀名为.media.tmp,则证明产生该异常文件的故障原因为异常中断。
可选地,在本申请一些可能的实现方式中,也可在存储系统中检索是否存在后缀名为.media.tmp的文件,若存在后缀名为.media.tmp的文件,意味着文件存储的最后一步未完成,证明存在异常中断,否则不存在异常中断。
本实施方式中,通过检测后缀名就可快速确定出产生异常文件的故障原因,提升了确定故障原因的速度。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
请参见图5,图5是本申请一实施例提供的一种修复文件的装置的示意图。该一种修复文件的装置包括的各单元用于执行图1、图4对应的实施例中的各步骤。具体请参阅图1、图4各自对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图5,包括:
获取单元210,用于获取异常文件,异常文件中包含正常的视频帧和待修复帧;
确定单元220,用于根据正常的视频帧,确定待修复帧的帧类型;
修复单元230,用于根据帧类型修复待修复帧,得到修复帧;
生成单元240,用于根据正常的视频帧、修复帧以及预设的配置文件,生成异常文件对应的修复文件。
可选地,在一种可能的实现方式中,正常的视频帧和待修复帧的数量均为多个,多个正常的视频帧和多个待修复帧交替排列,两个正常的视频帧之间有一个或多个待修复帧,确定单元220具体用于:针对每个正常的视频帧,检测正常的视频帧中的标识信息,标识信息包括预设字节,预设字节的数量表示待修复帧为音频帧的数量;当检测到标识信息时,确定待修复帧的帧类型为音频帧类型。
可选地,在一种可能的实现方式中,所述装置还包括检测单元,用于:当未检测到标识信息时,判断第一待修复帧与正常的视频帧是否相似,第一待修复帧为正常的视频帧后的第一个待修复帧;当判定第一待修复帧与正常的视频帧不相似时,确定第一待修复帧的帧类型为音频帧类型;或,当判定第一待修复帧与正常的视频帧相似时,确定第一待修复帧的帧类型为视频帧类型;判断第二待修复帧与正常的视频帧是否相似,并根据判断结果确定第二待修复帧的帧类型,第二待修复帧为与第一待修复帧相邻的待修复帧。
可选地,在一种可能的实现方式中,所述检测单元还用于:当未检测到标识信息时,获取第一待修复帧中的第一目标字节;根据第一目标字节生成第一待修复帧的帧长度;当帧长度大于或等于预设阈值时,判定第一待修复帧与正常的视频帧不相似。
可选地,在一种可能的实现方式中,所述检测单元还用于:当帧长度小于预设阈值时,获取第一待修复帧中的第二目标字节,第二目标字节用于表示第一待修复帧的帧类型对应的值;若检测到第二目标字节在预设取值范围内,则判定第一待修复帧与正常的视频帧相似;或,若检测到第二目标字节不在预设取值范围内,则判定第一待修复帧与正常的视频帧不相似。
可选地,在一种可能的实现方式中,待修复帧包含媒体数据,所述修复单元230具体用于:获取待修复帧的起始地址;根据帧类型确定待修复帧的目标帧长度;根据起始地址、目标帧长度以及媒体数据,生成修复帧。
可选地,在一种可能的实现方式中,所述装置还包括故障确定单元,该故障确定单元用于当检测到异常文件的后缀名为预设后缀名时,确定产生异常文件的故障原因为异常中断。
可选地,在一种可能的实现方式中,所述装置还包括存储单元,用于:在存储正常文件的过程中,确定第一视频帧和第二视频帧,第二视频帧存储在第一视频帧之后,第一视频帧和第二视频帧之间存储有一个或多个音频帧;针对每个音频帧,判断音频帧与第一视频帧是否相似;若判定音频帧与第一视频帧相似,则在第一视频帧中添加标识信息。
请参见图6,图6是本申请另一实施例提供的一种终端设备的示意图。如图6所示,该实施例的终端设备3包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述各个修复文件的方法实施例中的步骤,例如图1所示的S101至S104。或者,所述处理器30执行所述计算机程序32时实现上述各实施例中各单元的功能,例如图5所示单元210至240功能。
示例性地,所述计算机程序32可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器31中,并由所述处理器30执行,以完成本申请。所述一个或多个单元可以是能够完成特定功能的一系列计算机指令段,该指令段用于描述所述计算机程序32在所述终端设备3中的执行过程。例如,所述计算机程序32可以被分割为获取单元、确定单元、修复单元以及生成单元,各单元具体功能如上所述。
所述终端设备可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图6仅仅是终端设备3的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器31可以是所述终端设备的内部存储单元,例如设备的硬盘或内存。所述存储器31也可以是所述终端设备的外部存储终端,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器31还可以既包括所述设备的内部存储单元也包括外部存储终端。所述存储器31用于存储所述计算机指令以及所述终端所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机存储介质,计算机存储介质可以是非易失性,也可以是易失性,该计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述各个修复文件的方法实施例中的步骤。
本申请还提供了一种计算机程序产品,当计算机程序产品在设备上运行时,使得该设备执行上述各个修复文件的方法实施例中的步骤。
本申请实施例还提供了一种芯片或者集成电路,该芯片或者集成电路包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有该芯片或者集成电路的设备执行上述各个修复文件的方法实施例中的步骤。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神范围,均应包含在本申请的保护范围之内。

Claims (11)

1.一种修复文件的方法,其特征在于,包括:
获取异常文件,所述异常文件中包含正常的视频帧和待修复帧;
根据所述正常的视频帧,确定所述待修复帧的帧类型;
根据所述帧类型修复所述待修复帧,得到修复帧;
根据所述正常的视频帧、所述修复帧以及预设的配置文件,生成所述异常文件对应的修复文件。
2.根据权利要求1所述的方法,其特征在于,所述正常的视频帧和所述待修复帧的数量均为多个,多个正常的视频帧和多个待修复帧交替排列,两个正常的视频帧之间有一个或多个待修复帧,所述根据所述正常的视频帧,确定所述待修复帧的帧类型,包括:
针对每个正常的视频帧,检测所述正常的视频帧中的标识信息,所述标识信息包括预设字节,所述预设字节的数量表示所述待修复帧为音频帧的数量;
当检测到所述标识信息时,确定所述待修复帧的帧类型为音频帧类型。
3.根据权利要求2所述的方法,其特征在于,所述针对每个正常的视频帧,检测所述正常的视频帧中的标识信息之后,所述方法还包括:
当未检测到所述标识信息时,判断第一待修复帧与所述正常的视频帧是否相似,所述第一待修复帧为所述正常的视频帧后的第一个待修复帧;
当判定所述第一待修复帧与所述正常的视频帧不相似时,确定所述第一待修复帧的帧类型为所述音频帧类型;或,当判定所述第一待修复帧与所述正常的视频帧相似时,确定所述第一待修复帧的帧类型为视频帧类型;
判断第二待修复帧与所述正常的视频帧是否相似,并根据判断结果确定所述第二待修复帧的帧类型,所述第二待修复帧为与所述第一待修复帧相邻的待修复帧。
4.根据权利要求3所述的方法,其特征在于,所述当未检测到所述标识信息时,判断第一待修复帧与所述正常的视频帧是否相似,包括:
当未检测到所述标识信息时,获取所述第一待修复帧中的第一目标字节;
根据所述第一目标字节生成所述第一待修复帧的帧长度;
当所述帧长度大于或等于预设阈值时,判定所述第一待修复帧与所述正常的视频帧不相似。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一目标字节生成所述第一待修复帧的帧长度之后,所述方法还包括:
当所述帧长度小于所述预设阈值时,获取所述第一待修复帧中的第二目标字节,所述第二目标字节用于表示所述第一待修复帧的帧类型对应的值;
若检测到所述第二目标字节在预设取值范围内,则判定所述第一待修复帧与所述正常的视频帧相似;或,
若检测到所述第二目标字节不在预设取值范围内,则判定所述第一待修复帧与所述正常的视频帧不相似。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述待修复帧包含媒体数据,所述根据所述帧类型修复所述待修复帧,得到修复帧,包括:
获取所述待修复帧的起始地址;
根据所述帧类型确定所述待修复帧的目标帧长度;
根据所述起始地址、所述目标帧长度以及所述媒体数据,生成所述修复帧。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
当检测到所述异常文件的后缀名为预设后缀名时,确定产生所述异常文件的故障原因为异常中断。
8.根据权利要求1所述的方法,其特征在于,所述获取异常文件之前,所述方法还包括:
在存储正常文件的过程中,确定第一视频帧和第二视频帧,所述第二视频帧存储在所述第一视频帧之后,所述第一视频帧和所述第二视频帧之间存储有一个或多个音频帧;
针对每个音频帧,判断所述音频帧与所述第一视频帧是否相似;
若判定所述音频帧与所述第一视频帧相似,则在所述第一视频帧中添加标识信息。
9.一种修复文件的装置,其特征在于,包括:
获取单元,用于获取异常文件,所述异常文件中包含正常的视频帧和待修复帧;
确定单元,用于根据所述正常的视频帧,确定所述待修复帧的帧类型;
修复单元,用于根据所述帧类型修复所述待修复帧,得到修复帧;
生成单元,用于根据所述正常的视频帧、所述修复帧以及预设的配置文件,生成所述异常文件对应的修复文件。
10.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8中任一项所述的修复文件的方法的步骤。
11.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的修复文件的方法的步骤。
CN202210884374.9A 2022-07-25 2022-07-25 修复文件的方法、装置、终端设备及存储介质 Pending CN115334350A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210884374.9A CN115334350A (zh) 2022-07-25 2022-07-25 修复文件的方法、装置、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210884374.9A CN115334350A (zh) 2022-07-25 2022-07-25 修复文件的方法、装置、终端设备及存储介质

Publications (1)

Publication Number Publication Date
CN115334350A true CN115334350A (zh) 2022-11-11

Family

ID=83919156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210884374.9A Pending CN115334350A (zh) 2022-07-25 2022-07-25 修复文件的方法、装置、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN115334350A (zh)

Similar Documents

Publication Publication Date Title
US10136163B2 (en) Method and apparatus for repairing video file
US10476928B2 (en) Network video playback method and apparatus
CN109936715B (zh) 一种mp4文件的处理方法及其相关设备
EP3809708A1 (en) Video data storage method and device in cloud storage system
CN101540901B (zh) 编解码方法及装置
US11330345B2 (en) Verification code generation method, data verification method and electronic device
CN109597566B (zh) 一种数据读取、存储方法及装置
CN107241608B (zh) 一种用于帧缓存解压的硬件容错方法和装置
US11051080B2 (en) Method for improving video resolution and video quality, encoder, and decoder
US20210092468A1 (en) Method for on-demand video editing at transcode-time in a video streaming system
CN115334350A (zh) 修复文件的方法、装置、终端设备及存储介质
CN110851301B (zh) 一种用于mp4文件的恢复方法和系统
CN114337678A (zh) 数据压缩方法、装置、设备及存储介质
CN108765503B (zh) 一种肤色检测方法、装置及终端
CN110944197A (zh) 一种图像、音频编码的方法和装置
US20190200031A1 (en) Coding of video and audio with initialization fragments
CN112019878A (zh) 一种视频解码和编辑的方法、装置、设备和存储介质
CN110855645B (zh) 流媒体数据播放方法、装置
CN112927311B (zh) 样点自适应补偿的边带补偿模式的数据处理方法、装置
CN104754404A (zh) 一种终端
CN108093258A (zh) 码流数据的解码方法、计算机装置及计算机可读存储介质
CN114143486A (zh) 视频流同步方法、装置、计算机设备和存储介质
CN109584891B (zh) 嵌入式环境下的音频解码方法、装置、设备及介质
CN117176979B (zh) 多源异构视频的内容帧提取方法、装置、设备及存储介质
CN113055680B (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