一种录像文件存储方法及装置与流程

文档序号:11176733阅读:542来源:国知局
一种录像文件存储方法及装置与流程

本发明涉及视频数据存储领域,特别涉及一种录像文件存储方法。本发明同时还涉及一种录像文件存储装置。



背景技术:

随着网络技术的蓬勃发展和视频监控数字化、网络化、高清化、智能化的逐渐成熟,视频监控前端摄像机视频采集技术也在飞速发展,从早期的10万像素到今天的200万、500万像素,视频清晰度越来越高,视频画面中的信息量也越来越丰富。作为安防视频管理系统信息的最终集散地,存储技术越来越为人们所重视。

在视频监控行业,尽可能的保证历史录像可播放是衡量一个视频监控系统是否健壮的关键指标。在监控存储解决方案中,目前最常用的是ipc(ipcamera,网络摄像机)+ipsan(storageareanetwork,存储局域网络)组网,该存储方案利用ipsan提供raid(redundantarraysofindependentdisks,磁盘阵列)5级别的保护。

raid是由很多磁盘组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,技术人员能够将数据切割成许多区段,分别存放在各个硬盘上。作为raid技术的规范之一,raid5能够使用至少3块硬盘(也可以更多)组建raid5磁盘阵列,当有数据写入硬盘的时候,这次数据写入会根据算法分成3部分,然后写入这3块硬盘,写入的同时还会在这3块硬盘上写入校验信息,当读取写入的数据的时候会分别从3块硬盘上读取数据内容,再通过检验信息进行校验。当其中有1块硬盘出现损坏的时候,就从另外2块硬盘上存储的数据可以计算出第3块硬盘的数据内容。

发明人在实现本发明的过程中发现,在有校验盘的情况下,一块盘损坏不影响录像文件的存储,但raid的存储方式只允许同时有一块硬盘出现故障,当有两块盘接连损坏的情况下,那么整个磁盘阵列的数据将会因为文件索引被破坏而不可读写。若不使用阵列而以单盘提供服务的话,需要在每一个盘上格式化文件系统,把文件单独存到一个盘上或者把一个文件分割成多份存储到多个盘上,该方案通过绕开了磁盘阵列的以提供单盘服务,但没有了磁盘阵列保护,用户所存储的录像文件直接受硬盘故障率的影响,从而导致系统稳定性降低。

由此可见,如何使存储在磁盘阵列中的录像文件能够在硬盘损坏而导致文件索引被破坏的前提下仍然可被读取,成为本领域技术人员亟待解决的技术问题。



技术实现要素:

本发明提供了一种录像文件存储方法,用以解决现有技术在磁盘出问题的情况下无法正常根据文件索引读取磁盘阵列中所存储的录像文件的问题,该方法应用于磁盘阵列raid存储系统中,包括:

将所述录像文件写入空白的分片数据段,并在写入完成后获取及保存所述分片数据段的地址,所述分片数据段与所述录像文件一一对应,且所述分片数据段的长度大于所述录像文件的文件大小;

当所述录像文件的文件索引发生异常时,根据所述地址在所述分片数据段中获取所述录像文件的录像数据。

相应的,本申请还提出了一种录像文件存储装置,应用于磁盘阵列raid存储系统中,包括:

写入模块,将所述录像文件写入空白的分片数据段,并在写入完成后获取及保存所述分片数据段的地址,所述分片数据段与所述录像文件一一对应,且所述分片数据段的长度大于所述录像文件的文件大小;

获取模块,当所述录像文件的文件索引发生异常时,根据所述地址在所述分片数据段中获取所述录像文件的录像数据。

由此可见,通过应用本申请的技术方案,将录像文件写入空白的分片数据段,并在写入完成后获取及保存该分片数据段的地址,由于该分片数据段与录像文件一一对应,且分片数据段的长度大于录像文件的文件大小,因此当录像文件的文件索引发生异常时,能够根据分片数据段的地址在分片数据段中获取录像文件的录像数据。从而能够在不降低存储性能的前提下解决了raid存储系统中文件索引被破坏而导致录像文件无法被读取的问题,提高了raid存储系统的稳定性。

附图说明

图1为本申请实施例提出的一种录像文件存储方法的流程示意图;

图2为现有技术中raid存储系统所采用的一种常见的存储格式的示意图;

图3为本申请具体实施例所提出的一种录像索引块格式的示意图;

图4为本申请具体实施例所提出的一种录像索引块的处理方法示意图;

图5为本申请实施例提出的一种录像文件存储装置的结构示意图。

具体实施方式

如背景技术所述,当raid存储系统中的多块磁盘均出现故障时,该raid存储系统中所述存储的录像文件的文件索引会被破坏,从而导致所存储的录像文件不可访问。即便是通过冗余备份的方式在其他磁盘阵列或者其他设备上完整复制一份当前raid存储系统中所有录像文件的索引。但该文件系统结构将会占用很大的空间作为索引区,无论是简单的备份或者完整备份都会降低其他逻辑卷的性能,从而对录像业务产生影响。

有鉴于现有技术中的问题,本发明提出了一种录像文件存储方法,该方法应用于磁盘阵列raid存储系统中,如图1所示,包括如下步骤:

s101,将所述录像文件写入空白的分片数据段,并在写入完成后获取及保存所述分片数据段的地址,所述分片数据段与所述录像文件一一对应,且所述分片数据段的长度大于所述录像文件的文件大小。

为便于对本发明的技术方案进行阐述,以下首先针对方案中所涉及的概念进行介绍,如图2所示,为raid存储系统所采用的一种常见的存储格式的示意图。该存储格式将一个逻辑卷划分为以下三个部分:

(1)格式化信息:用于描述slice索引区内卷索引、索引日志、目录索引、文件索引的地址信息。

(2)slice索引区:用于描述分片数据区内的多个数据段的信息。在slice索引区内部,卷索引描述整个分片数据区的分片数据段地址。目录索引和文件索引记录录像文件目录信息(目录名称、创建时间等)、录像文件信息(文件名称、文件创建时间等)以及占用的分片数据段地址信息。

(3)分片数据区:分片数据区根据固定长度分为多个分片数据段(现有技术中默认为64mb),分片数据段为一段连续且固定长度的数据。

在将录像文件存储至应用上述文件存储格式的raid存储系统时,所需要处理的内容分为文件描述信息和文件数据两部分。其中,文件描述信息包括录像文件的名称、创建时间、占用的一个或者多个分片数据段地址。而录像文件的录像数据存储在一个或者多个分片数据段中。在录像数据的存储完成后,文件描述信息被作为该录像文件的文件索引,其在raid存储系统中的地址被返回用户,由用户把记录保存到数据库,之后用户可以通过该地址读取对应的录像数据。

然而,由于raid是将数据切割成许多区段来分别存放在各个磁盘上,因此当raid存储系统中一块以上的磁盘因故障而无法访问时,其条带结构的数据存储方式将导致间隔的数据段不可被读取。以应用以上的存储格式的raid5阵列为例,假设该raid5阵列的条带块(组成阵列条带基本单元)的大小为64k,通过硬盘4+1的方式组成一个阵列,当其中两块盘被拔出后,连续完整的数据长度仅为3*64k,中间间隔丢失了64k数据。这种情况下,无论文件索引在逻辑卷(在阵列之上划分的逻辑资源)的任何位置,必然会出现损坏,而导致文件索引数据不可访问,用户也无从获得录像文件的存储位置。

基于以上描述,本发明的技术方案为了实现在文件系统索引损坏的情况下保证录像文件的录像数据继续可读,通过该步骤实现以下三个条件:

(1)一个录像文件只存储到一个分片数据段中:

(2)在现有技术的基础上加大单位分片数据段的长度,使其可以容纳单个录像文件;

(3)将分片数据段地址视为另一种文件索引(现有的文件索引处理方式保持不变)进行保存。

举例来说,在通过该步骤将2g大小的录像文件写入raid存储系统中分片数据区的某一个分片数据段后,该数据段中仅存在该录像文件,该录像文件也仅完整存储在该数据段中,并且该数据段的长度大于2g,以至于可整个容纳录像文件。

通过该步骤实现了一个录像文件和一个分片数据段对应后,由于分片数据段在下层存储上连续,那么单个录像文件的录像数据就可以通过分片数据段的地址进行描述。后续在当文件索引不完整无法访问时,用户可以通过分片数据段的地址进行访问。

为了达到以上技术目的,本申请的优选实施例在该步骤之前采用如下步骤确保分片数据段与录像文件一一对应且长度大于录像文件的文件大小:

步骤a)将所述分片数据段的长度设置为大于所述录像文件的文件大小;

步骤b)从所述raid存储系统中选择未存储任何录像文件的所述分片数据段。

在现有的文件存储格式中,单个文件的大小可以达到2gb或者更大,可同时对应多个slice的数据段。由于本发明的技术方案要求一个文件和一个分片数据段对应,所以该优选实施例通过增加单位分片数据段长度来保证单个录像文件的大小在存储至分片数据段后保持不变,从而间接保证索引不会增加。

需要说明的是,尽管上述优选实施例的步骤通过具体的方式阐述了如何将分片数据段的长度进行设置以及使单个分片数据段仅保存一个录像文件,但是本发明并不仅限于此,在写入录像文件之前的其他时机通过其他方式达到相同目的的实现方式均属于本申请的保护范围。

s102,当所述录像文件的文件索引发生异常时,根据所述地址在所述分片数据段中获取所述录像文件的录像数据。

由于本发明的技术方案在相对于现有技术中保存文件索引的基础上还额外保持了分片数据段的地址,因此在实际的应用过程中,用户在正常情况下可选择通过文件索引访问所存储的录像文件,并且可在此基础上读取更多的描述信息(例如创建时间等),以此来实现精确的检索。但是,当文件索引发生异常(例如因磁盘损坏而变得无法被读取)时,用户能够通过保存的分片数据段的地址找到录像文件的录像数据,并基于录像文件结构继续读取录像数据。

以上方案通过加大raid存储系统中分片数据段长度,同时把录像文件和分片数据段地址进行对应,简单的实现了通过分片数据段地址就可以读取录像文件的目的。在此基础上,为了进一步能够在录像存储格式索引损坏的情况下实现录像文件的检索与播放,本申请的优选实施例在分片数据段的录像文件上设置了连续空间,该连续空间中存储有多个与录像文件对应的相同的录像索引块。基于raid存储系统的特性,这些录像索引块具有以下特征:

(1)所述录像索引块包含校验信息以及所述录像文件的播放信息。

目前,录像数据格式多种多样,例如ps、ts格式的码流。为了准备描述录像文件的特征,该优选实施例在录像文件上(例如文件头)预留适当大小(例如1mb左右)的连续空间,用于保存多个录像索引块。该录像索引块描述的信息包括录像索引信息块的校验信息(用于确认该录像索引块是否完好)以及录像文件的播放信息,后续可在通过校验信息确认录像索引块完好的情况下,通过播放信息实现录像文件的数据播放。

在本申请的一个具体实施例中,录像索引块格式如图3所示,录像索引块描述的信息包括录像索引信息块的校验信息、录像文件的开始时间、结束时间、i帧间隔时间、每一个i帧的相对时间戳和i帧的相对存储位置。详细说明如下:

第一部分是索引块的校验信息,第二部分是录像的开始时间、结束时间,第三部分是i帧的间隔,单位秒,1表示间隔为1秒,第四部分是录像文件内所有i帧的相对时间戳,单位秒,第五部分是录像文件内所有i帧的地址信息,和第四部分的i帧的相对时间戳一一对应,按顺序排列。

举例来说,以一个2gb大小的录像文件为例,码率6mb/s,大约存储半小时左右,如果i帧间隔为1秒,那么就有1800个i帧,一个i帧时间戳加上一个i帧偏移总共8个字节,加上录像索引块校验信息(4个字节),录像开始时间和结束时间(64字节)、i帧间隔描述(4字节)总共大小为1800*8+4+64+4≈14k,这些信息存储在一个阵列的条带块内,假如条带块大小是64kb,那么多出剩余空间可用0填充。

在此需要说明的是,以上录像索引块所包含的内容及其所存放的位置均为本申请所提出的具体说明,本领域技术人员在此基础上所做的其他改进也应属于本申请的保护范围之内。

(2)所述录像索引块的大小小于或等于所述磁盘阵列raid存储系统的条带块。

(3)所述录像索引块数量大于组成所述磁盘阵列raid存储系统的磁盘的数量。

基于磁盘阵列的组成以及数据存储特性,在该预留的连续空间内,本发明的技术方案存储了多个录像索引块的副本(即多个录像索引块),每一个录像索引块的大小小于或等于阵列条带块的大小,且录像索引块的副本的个数要求大于用于做阵列的磁盘个数,这样即便是磁盘出现故障而导致其中某个录像索引块无法被读取,那么也可使用其他的录像索引块读取录像文件的相关信息,进而实现录像数据的播放。

以图4所示的具体应用场景为例,该具体实施例采取raid5以及4+1的阵列方案,阵列条带块的大小为64kb,在存储的录像文件的连续空间内的录像索引块的副本个数必须大于5个。因为raid5阵列按条带组织,对于多块磁盘损坏时,连续条带中的必然有一个条带块是好的,从而保证了的多个录像索引块中至少有一个是好的。

基于上述方案,本申请的优选实施例通过以下步骤实现录像数据的播放:

步骤a)根据所述开始时间、所述结束时间以及所述关键帧相对时间戳确定需要读取的关键帧的位置;

步骤b)根据所述关键帧地址信息从所述位置播放所述录像数据,并在遇到不完整的关键帧数据时根据所述关键帧间隔跳过所述不完整的关键帧数据。

在进行录像检索时,上述优选实施例的方案通过读取录像文件的多个索引块信息,根据校验信息找到正确的索引块。然后根据索引块中录像开始时间、结束时间,i帧的相对时戳,进行二分法查找,找到需要读取的i帧的位置,然后从当前i帧位置开始播放录像数据,如果过播放过程中有i帧数据不完整,跳过当前i帧,继续读取下一个i帧数据,以此确保在阵列损坏时,i帧的索引数据完整可读。

通过应用本申请的技术方案,将录像文件写入空白的分片数据段,并在写入完成后获取及保存该分片数据段的地址,由于该分片数据段与录像文件一一对应,且分片数据段的长度大于录像文件的文件大小,因此当录像文件的文件索引发生异常时,能够根据分片数据段的地址在分片数据段中获取录像文件的录像数据。从而能够在不降低存储性能的前提下解决了raid存储系统中文件索引被破坏而导致录像文件无法被读取的问题,提高了raid存储系统的稳定性。

为达到以上技术目的,本申请还提出了一种录像文件存储装置,应用于磁盘阵列raid存储系统中,如图5所示,包括:

写入模块510,将所述录像文件写入空白的分片数据段,并在写入完成后获取及保存所述分片数据段的地址,所述分片数据段与所述录像文件一一对应,且所述分片数据段的长度大于所述录像文件的文件大小;

获取模块520,当所述录像文件的文件索引发生异常时,根据所述地址在所述分片数据段中获取所述录像文件的录像数据。

在具体的应用场景中,还包括:

设置模块,将所述分片数据段的长度设置为大于所述录像文件的文件大小;

选择模块,从所述raid存储系统中选择未存储任何录像文件的所述分片数据段。

在具体的应用场景中,所述设置模块还用于:

在所述录像文件上设置连续空间,所述连续空间中存储有多个与所述录像文件对应的相同的录像索引块;

其中,所述录像索引块包含校验信息以及所述录像文件的播放信息,所述录像索引块的大小小于或等于所述磁盘阵列raid存储系统的条带块,所述录像索引块数量大于组成所述磁盘阵列raid存储系统的磁盘的数量。

在具体的应用场景中,还包括:

筛选模块,从所述连续空间中筛选出校验信息正确的录像索引块;

播放模块,根据所述校验信息正确的录像索引块中的播放信息对所述录像数据进行播放。

在具体的应用场景中,所述播放信息包含所述录像文件的开始时间、结束时间、关键帧间隔、关键帧相对时间戳以及关键帧地址信息,所述播放模块具体用于:

根据所述开始时间、所述结束时间以及所述关键帧相对时间戳确定需要读取的关键帧的位置;

根据所述关键帧地址信息从所述位置播放所述录像数据,并在遇到不完整的关键帧数据时根据所述关键帧间隔跳过所述不完整的关键帧数据。

通过应用本申请的技术方案,将录像文件写入空白的分片数据段,并在写入完成后获取及保存该分片数据段的地址,由于该分片数据段与录像文件一一对应,且分片数据段的长度大于录像文件的文件大小,因此当录像文件的文件索引发生异常时,能够根据分片数据段的地址在分片数据段中获取录像文件的录像数据。从而能够在不降低存储性能的前提下解决了raid存储系统中文件索引被破坏而导致录像文件无法被读取的问题,提高了raid存储系统的稳定性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1