CN106570111A - 一种数据存储方法及存储服务器 - Google Patents
一种数据存储方法及存储服务器 Download PDFInfo
- Publication number
- CN106570111A CN106570111A CN201610939621.5A CN201610939621A CN106570111A CN 106570111 A CN106570111 A CN 106570111A CN 201610939621 A CN201610939621 A CN 201610939621A CN 106570111 A CN106570111 A CN 106570111A
- Authority
- CN
- China
- Prior art keywords
- storage
- file
- storage file
- terminal
- server
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法,应用于包括存储服务器和多个终端的系统中,预先在存储服务器中生成多个存储文件,当终端在向存储服务器进行数据存储时,获取终端的ID查找对应的存储文件链表最后一项索引信息,若该索引信息中的存储结束时间为空,则将该终端的数据存储至该索引信息对应的第一存储文件中,否则根据存储服务器中存储文件状态表获取状态为空的第二存储文件,将终端数据存储至第二存储文件中,当存储文件状态表中全部存储文件的状态均不为空状态时,则获取存储服务器中存储时间最早的第三存储文件,将终端数据存储至第三存储文件,通过预先创建存储文件,后期不会因删除存储文件导致产生文件碎片,可以灵活的进行各终端的数据存储。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种数据存储方法,同时还特别涉及一种存储服务器。
背景技术
随着计算机技术以及多媒体技术的发展,数据的存储已经应用于各个方面,其中对各个硬件终端的要求也越来越高。
以视频监控为例,视频监控得到越来越广泛的应用,由于能够有效利用客户PC机资源,视频监控软件PC-NVR在一些预算紧张的小型监控项目上得到越来越广泛的应用。在这些应用中,用户经常需要把部分或全部接入到PC-NVR的IPC的音视频存储在PC-NVR运行的PC上。由于运行PC-NVR的PC机上不止运行PC-NVR一个软件,因此,既要保证PC-NVR的稳定运行、又要保证其他程序稳定运行,在PC-NVR如何存储IPC的音视频,以及如何管理保存的音视频文件就是业界人员需要考虑的重要问题。
申请人在实现本发明的过程中,发现了如下问题:
(1)某个IPC需要存储时,创建1个音视频文件,写入IPC的音视频,直到IPC离线或者断流为止,这样做的缺点是,保存文件可能过大或过小,在保存过程中出现一点异常导致文件损坏进而不能播放或者文件数量过多进而导致后续查询检索速度慢。
(2)持续存储IPC的音视频,当存储的音视频将PC的空闲硬盘空间占满时,会影响PC上其他软件的正常运行。
(3)另一方面如果不删除已存的音视频文件,那么存储就会中止,导致最新的录像不能存储,如果删除已经保存的录像文件,那会导致频繁的删除、创建文件,产生文件碎片,可能导致PC机文件系统崩溃。
如何解决数据存储过程中的存储文件过程中的文件碎片等问题,成了业界人员亟待解决的问题。
发明内容
为了解决上述问题,本发明提供了一种数据存储方法及存储服务器,以灵活的进行各终端的数据存储,来达到在数据的存储过程中,不会产生文件碎片的目的。
本实施例提出了一种数据存储方法,用于包括存储服务器和多个终端的系统中,预先在所述存储服务器中生成多个存储文件,所述方法还包括:
当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表;
获取所述存储文件链表中最后一项索引信息,所述存储文件链表中包含了所述ID对应的存储文件的索引信息,所述索引信息包括所述存储文件对应的终端ID、存储开始时间和存储结束时间;
若所述最后一项索引信息中的存储结束时间为空,则将所述终端的数据存储至所述最后一项索引信息对应的第一存储文件中;
若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中;
当所述存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中。
优选的,还包括:
所述存储服务器中还包括配置文件,所述配置文件中包含了所述存储文件的数量以及文件路径;
所述存储文件状态表具体包含空状态、满状态和存储中三种状态。
优选的,当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表,还包括:
当所述存储文件链表不存在时,根据所述ID生成所述存储文件链表;
判断所述存储文件状态表是否存在;
若所述存储文件状态表不存在,提示用户进行存储空间的分配;
若所述存储文件状态表存在,查询所述存储文件状态表中是否存在状态为空状态的存储文件。
优选的,所述存储服务器中的存储文件分别存在自身的编码,若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中,具体为:
若所述存储结束时间不为空,则根据所述存储文件状态表判断所述存储服务器中是否存在状态为空状态的存储文件;
若存在存储状态为空状态的存储文件,则将所述存储服务器中编码最小的第二存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第二存储文件的状态设置为存储中;
将所述终端的数据存储至所述第二存储文件中。
优选的,当存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中,具体为:
查询所述存储服务器中全部终端ID对应的存储文件链表,获取包含所述存储开始时间最早的第三存储文件索引信息的第二存储文件链表;
根据所述第二存储文件链表获取所述第三存储文件,将所述第三存储文件的索引信息从所述第二存储文件链表中删除;
将所述第三存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第三存储文件置为空文件;
将所述终端的数据存储至所述第三存储文件中。
基于与上述相同的技术思路,本申请实施例还提出了一种存储服务器,应用于存储服务器和多个终端的系统中,所述存储服务器包括:
分配模块,预先在所述存储服务器中生成多个存储文件;
查询模块,当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表;
获取模块,获取所述存储文件链表中最后一项索引信息,所述存储文件链表中包含了所述ID对应的存储文件的索引信息,所述索引信息包括所述存储文件对应的终端ID、存储开始时间和存储结束时间;
第一存储模块,若所述最后一项索引信息中的存储结束时间为空,则将所述终端的数据存储至所述最后一项索引信息对应的第一存储文件中;
第二存储模块,若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中;
第三存储模块,当所述存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中。
优选的,还包括:
所述存储服务器中还包括配置文件,所述配置文件中包含了所述存储文件的数量以及文件路径;
所述存储文件状态表具体包含空状态、满状态和存储中三种状态。
优选的,所述查询模块还用于:
当所述存储文件链表不存在时,根据所述ID生成所述存储文件链表;
判断所述存储文件状态表是否存在;
若所述存储文件状态表不存在,提示用户进行存储空间的分配;
若所述存储文件状态表存在,查询所述存储文件状态表中是否存在状态为空状态的存储文件。
优选的,所述存储服务器中的存储文件分别存在自身的编码,所述第一存储模块具体用于:
若所述存储结束时间不为空,则根据所述存储文件状态表判断所述存储服务器中是否存在状态为空状态的存储文件;
若存在存储状态为空状态的存储文件,则将所述存储服务器中编码最小的第二存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第二存储文件的状态设置为存储中;
将所述终端的数据存储至所述第二存储文件中。
优选的,所述第三存储模块具体用于:
查询所述存储服务器中全部终端ID对应的存储文件链表,获取包含所述存储开始时间最早的第三存储文件索引信息的第二存储文件链表;
根据所述第二存储文件链表获取所述第三存储文件,将所述第三存储文件的索引信息从所述第二存储文件链表中删除;
将所述第三存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第三存储文件置为空文件;
将所述终端的数据存储至所述第三存储文件中。
通过应用本发明提出的一种数据存储方法,应用于包括存储服务器和多个终端的系统中,预先在存储服务器中生成多个存储文件,当终端在向存储服务器进行数据存储时,获取终端的ID查找对应的存储文件链表最后一项索引信息,若该索引信息中的存储结束时间为空,则将该终端的数据存储至该索引信息对应的第一存储文件中,否则根据存储服务器中存储文件状态表获取状态为空状态的第二存储文件,将终端数据存储至第二存储文件中,当存储文件状态表中全部存储文件的状态均不为空状态时,则获取存储服务器中存储时间最早的第三存储文件,将终端数据存储至第三存储文件,通过预先创建存储文件,后期也不会删除存储文件导致产生文件碎片,可以灵活的进行各终端的数据存储。
附图说明
图1为本申请实施例提出的一种数据存储方法流程示意图;
图2为本申请具体实施例提出的一种PC-NVR启动加载MP4文件链表的流程示意图;
图3为本申请具体实施例提出的一种PC-NVR分配IPC音视频存储空间流程示意图;
图3a为本申请具体实施例提出的一种MP4文件的命名示意图;
图3b为本申请具体实施例提出的一种MP4文件扩展的file type box示意图;
图4为本申请具体实施例提出的一种存储音视频文件方法的流程示意图;
图5为本申请具体实施例提出的一种存储服务器结构示意图;
具体实施方式
如背景技术中所述,在数据的存储过程中,频繁的删除与创建文件,会产生文件碎片,导致存储设备或服务器文件系统的崩溃,本申请针对该情况,提出了一种数据存储方法及存储服务器,通过预先创建存储文件,后期也不会删除存储文件导致产生文件碎片,可以灵活的进行各终端的数据存储。
本申请实施例中提出一种数据存储方法,该方法应用于包括存储服务器和多个终端的系统中,在描述本实施例的技术方案之前,先对存储服务器和终端进行说明,其中存储服务器可以是PC机也可以是硬盘或云服务器等装置,存储服务器本身具有数据存储的功能,而对于终端来说,可以为手机、平板、录音机、照相机以及摄像机或PC等数据源,自身具有产生数据的功能,在本申请的具体实施例中,以存储服务器为PC-NVR(视频监控软件,基于PC机),终端为IPC(网络摄像机)为例进行说明,本领域技术人员在不进行创造性努力的情况下对存储服务器以及终端进行的改进,都属于本申请的保护范围。
以上对存储服务器以及终端进行了说明,终端传输向存储服务器传输数据,将数据存储于存储服务器,终端产生的数据,可以为音视频也可以为其他数据,数据格式以及内容的改变不会影响本申请的保护范围,而在申请的具体实施例中,则以数据格式为视频文件,MP4格式为例进行了说明。
如图1所示,为本申请实施例提出的一种数据存储方法流程示意图,具体的步骤如下:
步骤101,当终端在向存储服务器进行数据存储时,根据终端的ID查找ID对应的存储文件链表。
在描述本步骤之前,还需要预先在存储服务器中划分出多个固定大小的存储文件,该存储文件为终端数据的存储位置,同时还创建配置文件,该配置文件中保存了创建存储文件的个数以及文件存储路径,后续终端数据的更新,删除都在该存储文件中进行,由此,不会在PC文件中产生文件碎片,该存储文件的格式可以RMVB,MP4等格式,对其进行扩展后,该格式的文件可以灵活进行文件的更新删除等,在本申请的优选实施例中,存储文件具有自身的编码,按照创建顺序进行编码。
在进行存储文件的创建后,同时生成该存储文件的索引信息,该索引信息包括存储文件对应的ID,数据的存储开始时间以及存储结束时间,在实际的应用场景中,通常会存在多个终端设备,为了区分不同的终端设备的数据,所以根据终端设备的ID来进行划分,一个终端可以对应多个存储文件,而一个存储文件中只能用于存储来自一个终端的数据,以视频监控系统为例,终端设备为IPC,存储服务器为PC-NVR,多个IPC与PC-NVR相连,一个IPC占用一个通道,此时可以用通道来进行IPC的划分,此时存储文件中的ID就可以为IPC的通道号,对于ID的划分可以根据实际的经验灵活地进行设定。
在终端进行数据存储过程中,需要确定具体的存储路径,在本步骤中,终端在向存储服务器进行数据存储时,首先判断配置文件是否存在,若配置文件不存在,则退出,等待用户手工配置进行存储空间的划分。若配置文件存在,则读取配置文件中的信息,判断是否存在于自身ID对应的存储文件链表,若不存在,则在存储服务器中创建终端ID对应的存储文件链表,若存在,则读取存储文件链表。
在本申请的优选实施例中,该存储服务器中包含了存储文件、存储文件链表以及存储文件状态表,其中存储文件链表存储了存储文件的摘要信息,存储文件状态表中包含了存储文件的状态信息,具体为存储中,空状态,满状态三种状态。
在创建了存储文件链表后,判断是否存在存储文件状态表,若不存在,则提示用户手工配置进行存储空间的划分,若存在,则查询是否存在未空状态的存储文件,来进行终端的数据存储。
上述描述中的存储文件链表是终端ID对应的存储文件的摘要信息,终端通过读取该存储文件中的信息可以清楚、快速的遍历存储服务器中的已经存储了本终端数据的存储文件,该存储文件链表中包含了各存储文件对应的终端ID、数据存储开始时间、存储结束时间,该存储链表一个元素中存储一个存储文件的摘要信息,该存储链表中的元素按照存储文件的存储时间的先后顺序进行排列。
步骤102,获取存储文件链表中最后一项索引信息。
在终端数据的存储过程中,需要将该数据存储于当前还未存满的存储文件中,而存储文件链表的特性则是按照存储文件的存储时间的先后顺序进行排列,所以直接进行该存储文件链表最后一个元素即最后一项索引信息的获取,在此之前的存储文件信息均已存满,只需要判断该索引信息对应的存储文件是否存满即可。
步骤103,若最后一项索引信息中的存储结束时间为空,则将终端的数据存储至最后一项索引信息对应的第一存储文件中。
若最后一项索引信息中存储文件的存储时间为空,则表示该存储文件尚未存满且处于存储中,将终端的数据直接存入该索引信息对应的第一存储文件中。
步骤104,若存储结束时间不为空,则根据存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将终端的数据存储至第二存储文件中。
在本申请的优选实施例中,若最后一项索引信息中存储文件的存储时间不为空,已经有存储时间存在,则表示该存储文件已经存满,则需要遍历存储服务器中所有的存储文件状态为空状态的第二存储文件,即直接进行存储文件状态表的查询,获取状态为空且编码最小的存储文件,将该文件的摘要信息加入到终端ID对应的存储文件链表中,其中摘要信息中ID为终端ID,顺序为存储文件链表中最后一项,随后将终端的数据存入至该第三存储文件中。
步骤105,当存储文件状态表中全部存储文件的状态均不为空时,则获取存储服务器中存储开始时间最早的第三存储文件,将终端的数据存储至第三存储文件中。
当存储文件状态表中全部存储文件的状态均不为空状态时,标识着当前存储服务器中全部存储文件都已存储满或处于存储中状态,在具体的应用场景中,有些存储文件存储的数据已经不具备继续保存的价值,可以进行删除或丢弃等,如行车记录仪以及监控器的视频等,较长时间之前的存储录像已经没有保存的价值,可以执行覆盖,因此,在本步骤中,若当前不存在空闲的存储文件,则遍历所有ID对应的存储文件链表,获取存储开始时间最早的第三索引信息,获取该索引信息所在的第二存储文件链表,获取该索引信息对应的第三存储文件,将第三存储文件的索引信息从第二存储文件链表中删除,将该存储文件的索引信息加入到终端ID对应的存储文件链表中,设置该第三存储文件的状态为空状态,将终端设备的数据存入该第三存储文件。
需要说明的是,在实际的应用中,为了保护存储文件中的数据,可以对存储开始时间的值设置一个时间阈值,若所述存储开始时间至当前时间的时间差值未超过该时间阈值,则不对第三存储文件进行覆盖,此时需要向用户发出警告,提示用户无存储空间,需要手工分配存储空间。
通过应用本实施例提出的一种数据存储方法,应用于包括存储服务器和多个终端的系统中,预先在存储服务器中生成多个存储文件,当终端在向存储服务器进行数据存储时,获取终端的ID查找对应的存储文件链表最后一项索引信息,若该索引信息中的存储结束时间为空,则将该终端的数据存储至该索引信息对应的第一存储文件中,否则根据存储服务器中存储文件状态表获取状态为空状态的第二存储文件,将终端数据存储至第二存储文件中,当存储文件状态表中全部存储文件的状态均不为空状态时,则获取存储服务器中存储时间最早的第三存储文件,将终端数据存储至第三存储文件,通过预先创建存储文件,后期不会因删除存储文件而导致产生文件碎片,可以灵活的进行各终端的数据存储。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
本具体实施例中通用视频格式文件的指定格式为mp4格式,本领域技术人员应当得知,通用视频格式文件的存储包括但不限于该格式,此处以在PV-NVR过程中的视频格式为mp4格式进行说明,其中存储服务器为PC-NVR,具体存储位置为PC硬盘中,终端为IPC网络摄像机,其中由于每个IPC占用一个通道,故在本具体实施例中以通道号来代替终端ID进行描述。
在为PC-NVR分配存储音视频的存储空间时,预先创建固定大小的mp4空文件(创建文件个数=(总分配空间大小/mp4文件大小)取整)和1个配置文件config(保存创建文件的个数,以及文件路径)。其中对创建的mp4文件中的文件类型box扩展3个字段,channel字段,用来记录通道号信息,这个通道号指明mp4文件保存的是哪个摄像机的音视频。Begin_time用来保存录像的开始时间,End_time用来保存录像的结束时间,其中,一个mp4文件只保存1个通道的录像,一个通道的录像可以保存在多个MP4文件中。
在实施本具体实施例的技术方案之前,先对该具体实施例的技术原理进行说明:
有了通道号以及开始时间和结束时间,将该信息作为MP4文件的索引信息把每一个通道的所有录像文件串起来,方便后续的PC-NVR检索和回放某个通道的音视频。同时mp4文件通用播放器能够直接播放。
具体的,本申请具体实施例主要包含以下三个步骤:
步骤A,PC-NVR启动加载MP4文件链表;
步骤B,PC-NVR音视频存储空间管理(创建);
步骤C,PC-NVR进行音视频存储;
步骤D,PC-NVR检索回放录像。
针对上述步骤A,在进行视频录像的存储过程中,PC-NVR首先启动MP4文件链表,如图2所示,为PC-NVR启动加载MP4文件链表的流程示意图,其中,当PC-NVR启动时,首先判断config文件是否存在,具体有两种情况:
情况一:config文件存在,则PC-NVR读取配置文件中的信息,在自身内存中创建通道MP4文件链表,获取相应的MP4文件信息来进行音视频的存储;
情况二:config文件不存在,则说明PC-NVR还没有分配过存储空间,也就没有存储过IPC的音视频,则PC-NVR进行MP4文件的创建及空间的分配。
针对上述步骤B,由于PC-NVR为例,PC-NVR分配IPC音视频存储空间,如图3所示,为本申请具体实施例中PC-NVR分配IPC音视频存储空间流程示意图,具体步骤如下:
步骤301,在PC电脑上选择音视频存储的位置,例如硬盘分区即盘符以及硬盘下的文件夹等;
步骤302,创建n个固定大小的MP4空文件以及一个配置文件config;
具体的,创建的MP4文件大小固定,在实际实现时可固定为512MB,config文件中保存创建的MP4空文件所在的盘符和盘符下的文件夹以及文件个数。
其中,如果在多个文件夹下多次创建,则创建多个盘符和盘符下的文件夹以及文件个数,格式为“盘符,文件夹,文件个数”,或“盘符/文件夹个数/文件个数”具体可以由方案实施者进行灵活的设置,空的MP4文件命名为:“8位随机数+序号”,如图3a所示,为本申请具体实施例提出的一种MP4文件的命名示意图,以序号进行排列来进行MP4文件先后创建以及存储顺序的标识。
上述描述中的MP4的文件特征如图3b所示,为本申请具体实施例提出的一种MP4文件中file type box中内容,其中channel、Begin_time、End_time为本申请扩展内容,Length填写40,表示file type box的长度。boytype、Major_brand、Minor_brand、Compatible_brands参考ISO_IEC_14496-12填写。
MP4文件索引内容包括:Channel通道号、begin_time开始时间、end_time结束时间,值取file type box中对应的值,在一个空的MP4文件写入音视频码流时,把文件命名为“channel+录像开始时间+结束时间”,录像结束时间为0表示MP4文件未写满音视频码流。
步骤303,生成MP4文件状态表。
具体的,PC-NVR在内存中申请1个长度为n,n取值为MP4文件的个数,单位为1字节的数组,作为MP4文件状态表,用来记录创建的MP4文件的状态,空的MP4文件状态表中全部置为0,MP4文件已记录满标记为1,MP4文件处于记录过程中标记为2。
针对上述步骤C的IPC存储音视频的流程,当IPC需要进行音视频存储时,首先要选择进行音视频存储的MP4文件,当确定需要进行音视频存储的MP4文件后,按照MP4文件的要求写入音视频,将file type box扩展部分填好,再把MP4文件的索引信息按编号接入通道MP4文件链表。具体的,如图4所示,为本申请具体实施例提出的一种存储音视频文件方法的流程示意图,具体步骤如下:
S401,通道号为x的IPC启动存储;
具体的,若当前IPC-NVR中的某一IPC开始进行音视频录制时,首先进行识别该IPC对应的通道号,具体的IPC的通道的号预先已经设置完成,存储在IPC-NVR中,直接进行查询就可以。
S402,判断通道号为x的MP4文件链表是否存在;
具体的,若存在则执行步骤S403;
若不存在,则表示没有进行过音视频的存储,需要进行音视频存储空间的分配,则执行步骤S406。
S403,获取通道号为x的MP4文件链表指向MP4文件索引的最后一项;
具体的,一个通道号x对应多个MP4文件,通过MP4文件链表获取MP4文件的索引信息以及先后顺序,来获取通号x对应的当前时间顺序最后一项MP4文件。
S404,判断最后一项MP4文件索引文件中结束时间是否为空;
具体的,若为空,则表示该MP4文件可以继续进行音视频的存储,执行步骤S405;
若不为空,则表示该MP4文件已经存储完成,当前已经没有可以用于进行该通道号对应的空MP4文件进行存储,执行步骤S409。
S405,选择该MP4索引文件对应的MP4文件,写入该IPC输出的音视频码流,结束该IPC启动存储流程。
S406,创建通道号x的MP4文件链表;
S407,判断MP4文件状态表是否存在;
具体的,若存在,则执行步骤408;
若不存在,表示当前存储空间内可用于存储的MP4文件全部被占用,没有可以供通道号为x的IPC进行音视频的存储,执行步骤414。
S408,查看MP4文件状态表;
S409,判断MP4文件状态表中是否存在取值为0的项;
具体的,实际为判断当前MP4文件中是否存在空的MP4文件,若存在,则执行S411,若不存在,则执行步骤S410。
S410,查看所有通道的MP4文件链表,取时间值最早且对应MP4文件状态为1的链表项,看是否取到;
具体的,在实际应用场景中,由于PC-NVR内的存储空间有限,当存储空间较满时,需要对最早的一些音视频文件进行删除,以便存入最新的音视频码流,由此,本步骤来筛选出最早的MP4文件,状态为1则表示该文件为存储满的,由于个别情况下,可能自身存储的MP4文件为一个,则会产生查询不到的情况,所以,若可以取到,则执行步骤S412,若不可以,则执行步骤S414。
S411,取第一个状态为0的MP4文件,将其索引信息加入到MP4文件链表,把MP4对应的状态表中的值设置为2;
具体的,获取MP4顺序中第一个状态为空的MP4文件,将其的索引信息加入到该通道号x对应的MP4链表,将该MP4的状态设置为正在存储,执行步骤S415。
S412,获取MP4链表项对应的MP4文件,将其从原通道号对应的链表中删除,执行步骤S413;
S413,获取MP4链表项对应的MP4文件,放到x通道MP4文件链表,把MP4对应的状态表中状态设置为2,把MP4文件置为空文件,执行步骤S415;
步骤414,提示用户手工分配存储空间;
具体的,当前没有音视频码流的存储空间,则提示用户进行手工分配存储空间,用户可以进行创建MP4文件,或将单独的一个MP4文件进行置0,这种情况多用于车载行车记录仪中。
步骤415,在MP4文件中写入音视频码流;
首先在file type中begin_time中填写音视频开始时间,在MP4文件中写入音视频码流,结束该IPC启动存储流程。
而对于前述步骤D,在后续的应用中,还会存在PC-NVR检索录像回放录像的情况,具体为:选择IPC的通道号和需要回放的时间段,查询mp4文件链表,根据回放时间段获取回放的录像在哪几个mp4文件上,把获取的mp4文件及实际录像对应的开始时间和结束时间返回,界面既可以把有录像的时间段显示在时间轴上或显示需要播放的mp4文件列表,给定IPC通道号和需要回放的时间段,查询mp4文件链表,给据回放时间段获取回放的录像在哪几个mp4文件上,把获取的mp4文件及实际录像对应的开始时间和结束时间返回,界面既可以把有录像的时间段显示在时间轴上或显示需要播放的mp4文件列表。
在某些场景下,需要用通用播放器播放存储的MP4文件,具体为:找到录像所在的文件夹,根据mp4文件的命名找到所要播放的文件,通过通用播放器打开进行播放。
由此可见,MP4文件预创建、不会产生文件碎片,也不影响PC-NVR上其他软件的运行,在数据的更新过程中,MP4文件不会删除,可以覆盖MP4文件中保存的内容,同时预创建的MP4文件根据用户的需要存储任意通道的录像。
基于与上述相同的技术思路,本申请具体实施例还提出了一种存储服务器,应用于存储服务器和多个终端的系统中,如图5所示,为本申请具体实施例提出的一种存储服务器结构示意图,所述存储服务器包括:
分配模块51,预先在所述存储服务器中生成多个存储文件;
查询模块52,当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表;
获取模块53,获取所述存储文件链表中最后一项索引信息,所述存储文件链表中包含了所述ID对应的存储文件的索引信息,所述索引信息包括所述存储文件对应的终端ID、存储开始时间和存储结束时间;
第一存储模块54,若所述最后一项索引信息中的存储结束时间为空,则将所述终端的数据存储至所述最后一项索引信息对应的第一存储文件中;
第二存储模块55,若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中;
第三存储模块56,当所述存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中。
在具体的应用场景中,还包括:
所述存储服务器中还包括配置文件,所述配置文件中包含了所述存储文件的数量以及文件路径;
所述存储文件状态表具体包含空状态、满状态和存储中三种状态。
在具体的应用场景中,所述查询模块52还用于:
当所述存储文件链表不存在时,根据所述ID生成所述存储文件链表;
判断所述存储文件状态表是否存在;
若所述存储文件状态表不存在,提示用户进行存储空间的分配;
若所述存储文件状态表存在,查询所述存储文件状态表中是否存在状态为空状态的存储文件。
在具体的应用场景中,所述存储服务器中的存储文件分别存在自身的编码,所述第一存储模块54具体用于:
若所述存储结束时间不为空,则根据所述存储文件状态表判断所述存储服务器中是否存在状态为空状态的存储文件;
若存在存储状态为空状态的存储文件,则将所述存储服务器中编码最小的第二存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第二存储文件的状态设置为存储中;
将所述终端的数据存储至所述第二存储文件中。
在具体的应用场景中,所述第三存储模块56具体用于:
查询所述存储服务器中全部终端ID对应的存储文件链表,获取包含所述存储开始时间最早的第三存储文件索引信息的第二存储文件链表;
根据所述第二存储文件链表获取所述第三存储文件,将所述第三存储文件的索引信息从所述第二存储文件链表中删除;
将所述第三存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第三存储文件置为空文件;
将所述终端的数据存储至所述第三存储文件中。
通过应用本发明提出的技术方案,预先在存储服务器中生成多个存储文件,当终端在向存储服务器进行数据存储时,获取终端的ID查找对应的存储文件链表最后一项索引信息,若该索引信息中的存储结束时间为空,则将该终端的数据存储至该索引信息对应的第一存储文件中,否则根据存储服务器中存储文件状态表获取状态为空的第二存储文件,将终端数据存储至第二存储文件中,当存储文件状态表中全部存储文件的状态均不为空时,则获取存储服务器中存储时间最早的第三存储文件,将终端数据存储至第三存储文件,通过预先创建存储文件,后期不会因删除存储文件而导致产生文件碎片,可以灵活的进行各终端的数据存储。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种数据存储方法,应用于存储服务器和多个终端的系统中,其特征在于,预先在所述存储服务器中生成多个存储文件,所述方法还包括:
当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表;
获取所述存储文件链表中最后一项索引信息,所述存储文件链表中包含了所述ID对应的存储文件的索引信息,所述索引信息包括所述存储文件对应的终端ID、存储开始时间和存储结束时间;
若所述最后一项索引信息中的存储结束时间为空,则将所述终端的数据存储至所述最后一项索引信息对应的第一存储文件中;
若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中;
当所述存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中。
2.如权利要求1所述的方法,其特征在于,还包括:
所述存储服务器中还包括配置文件,所述配置文件中包含了所述存储文件的数量以及文件路径;
所述存储文件状态表具体包含空状态、满状态和存储中三种状态。
3.如权利要求1所述的方法,其特征在于,当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表,还包括:
当所述存储文件链表不存在时,根据所述ID生成所述存储文件链表;
判断所述存储文件状态表是否存在;
若所述存储文件状态表不存在,提示用户进行存储空间的分配;
若所述存储文件状态表存在,查询所述存储文件状态表中是否存在状态为空状态的存储文件。
4.如权利要求1所述的方法,其特征在于,所述存储服务器中的存储文件分别存在自身的编码,若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中,具体为:
若所述存储结束时间不为空,则根据所述存储文件状态表判断所述存储服务器中是否存在状态为空状态的存储文件;
若存在存储状态为空状态的存储文件,则将所述存储服务器中编码最小的第二存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第二存储文件的状态设置为存储中;
将所述终端的数据存储至所述第二存储文件中。
5.如权利要求1所述的方法,其特征在于,当存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中,具体为:
查询所述存储服务器中全部终端ID对应的存储文件链表,获取包含所述存储开始时间最早的第三存储文件索引信息的第二存储文件链表;
根据所述第二存储文件链表获取所述第三存储文件,将所述第三存储文件的索引信息从所述第二存储文件链表中删除;
将所述第三存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第三存储文件置为空文件;
将所述终端的数据存储至所述第三存储文件中。
6.一种存储服务器,应用于存储服务器和多个终端的系统中,其特征在于,所述存储服务器包括:
分配模块,预先在所述存储服务器中生成多个存储文件;
查询模块,当所述终端在向所述存储服务器进行数据存储时,根据所述终端的ID查找所述ID对应的存储文件链表;
获取模块,获取所述存储文件链表中最后一项索引信息,所述存储文件链表中包含了所述ID对应的存储文件的索引信息,所述索引信息包括所述存储文件对应的终端ID、存储开始时间和存储结束时间;
第一存储模块,若所述最后一项索引信息中的存储结束时间为空,则将所述终端的数据存储至所述最后一项索引信息对应的第一存储文件中;
第二存储模块,若所述存储结束时间不为空,则根据所述存储服务器中的存储文件状态表获取状态为空状态的第二存储文件,将所述终端的数据存储至所述第二存储文件中;
第三存储模块,当所述存储文件状态表中全部存储文件的状态均不为空状态时,则获取所述存储服务器中所述存储开始时间最早的第三存储文件,将所述终端的数据存储至所述第三存储文件中。
7.如权利要求6所述的存储服务器,还包括:
所述存储服务器中还包括配置文件,所述配置文件中包含了所述存储文件的数量以及文件路径;
所述存储文件状态表具体包含空状态、满状态和存储中三种状态。
8.如权利要求6所述的存储服务器,其特征在于,所述查询模块还用于:
当所述存储文件链表不存在时,根据所述ID生成所述存储文件链表;
判断所述存储文件状态表是否存在;
若所述存储文件状态表不存在,提示用户进行存储空间的分配;
若所述存储文件状态表存在,查询所述存储文件状态表中是否存在状态为空状态的存储文件。
9.如权利要求6所述的存储服务器,其特征在于,所述存储服务器中的存储文件分别存在自身的编码,所述第一存储模块具体用于:
若所述存储结束时间不为空,则根据所述存储文件状态表判断所述存储服务器中是否存在状态为空状态的存储文件;
若存在存储状态为空状态的存储文件,则将所述存储服务器中编码最小的第二存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第二存储文件的状态设置为存储中;
将所述终端的数据存储至所述第二存储文件中。
10.如权利要求6所述的存储服务器,其特征在于,所述第三存储模块具体用于:
查询所述存储服务器中全部终端ID对应的存储文件链表,获取包含所述存储开始时间最早的第三存储文件索引信息的第二存储文件链表;
根据所述第二存储文件链表获取所述第三存储文件,将所述第三存储文件的索引信息从所述第二存储文件链表中删除;
将所述第三存储文件的索引信息添加到所述ID对应的存储文件链表中,将所述第三存储文件置为空文件;
将所述终端的数据存储至所述第三存储文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610939621.5A CN106570111A (zh) | 2016-11-01 | 2016-11-01 | 一种数据存储方法及存储服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610939621.5A CN106570111A (zh) | 2016-11-01 | 2016-11-01 | 一种数据存储方法及存储服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106570111A true CN106570111A (zh) | 2017-04-19 |
Family
ID=58536203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610939621.5A Pending CN106570111A (zh) | 2016-11-01 | 2016-11-01 | 一种数据存储方法及存储服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106570111A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN110109865A (zh) * | 2019-05-07 | 2019-08-09 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及可读存储介质 |
CN110609815A (zh) * | 2019-07-30 | 2019-12-24 | 河钢股份有限公司承德分公司 | 数据文件存储、共享方法及终端设备 |
CN110716884A (zh) * | 2019-09-20 | 2020-01-21 | 深圳市网心科技有限公司 | 碎片数据存储方法、电子设备及系统 |
CN113377710A (zh) * | 2020-03-10 | 2021-09-10 | 中国移动通信集团湖南有限公司 | 一种数据获取方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750164A (zh) * | 2005-07-20 | 2006-03-22 | 杭州海康威视数字技术有限公司 | 一种防止文件碎片产生的数字硬盘录像机文件管理方法 |
CN101699443A (zh) * | 2009-11-04 | 2010-04-28 | 北京东方广视科技有限责任公司 | 一种管理网络文件的方法和装置 |
CN103164490A (zh) * | 2011-12-19 | 2013-06-19 | 北京新媒传信科技有限公司 | 一种不固定长度数据的高效存储实现方法和装置 |
CN104809135A (zh) * | 2014-01-27 | 2015-07-29 | 腾讯科技(深圳)有限公司 | 一种数据存取方法及装置 |
-
2016
- 2016-11-01 CN CN201610939621.5A patent/CN106570111A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750164A (zh) * | 2005-07-20 | 2006-03-22 | 杭州海康威视数字技术有限公司 | 一种防止文件碎片产生的数字硬盘录像机文件管理方法 |
CN101699443A (zh) * | 2009-11-04 | 2010-04-28 | 北京东方广视科技有限责任公司 | 一种管理网络文件的方法和装置 |
CN103164490A (zh) * | 2011-12-19 | 2013-06-19 | 北京新媒传信科技有限公司 | 一种不固定长度数据的高效存储实现方法和装置 |
CN104809135A (zh) * | 2014-01-27 | 2015-07-29 | 腾讯科技(深圳)有限公司 | 一种数据存取方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804545A (zh) * | 2018-05-18 | 2018-11-13 | 深圳市彬讯科技有限公司 | 分布式全局唯一id生成方法及设备 |
CN108804545B (zh) * | 2018-05-18 | 2022-07-08 | 土巴兔集团股份有限公司 | 分布式全局唯一id生成方法及设备 |
CN110109865A (zh) * | 2019-05-07 | 2019-08-09 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及可读存储介质 |
CN110609815A (zh) * | 2019-07-30 | 2019-12-24 | 河钢股份有限公司承德分公司 | 数据文件存储、共享方法及终端设备 |
CN110609815B (zh) * | 2019-07-30 | 2022-05-24 | 河钢股份有限公司承德分公司 | 数据文件存储、共享方法及终端设备 |
CN110716884A (zh) * | 2019-09-20 | 2020-01-21 | 深圳市网心科技有限公司 | 碎片数据存储方法、电子设备及系统 |
CN110716884B (zh) * | 2019-09-20 | 2023-11-17 | 深圳市网心科技有限公司 | 碎片数据存储方法、电子设备及系统 |
CN113377710A (zh) * | 2020-03-10 | 2021-09-10 | 中国移动通信集团湖南有限公司 | 一种数据获取方法、装置及电子设备 |
CN113377710B (zh) * | 2020-03-10 | 2023-08-01 | 中国移动通信集团湖南有限公司 | 一种数据获取方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106570111A (zh) | 一种数据存储方法及存储服务器 | |
US6934700B1 (en) | File systems supported data sharing | |
CN101325078B (zh) | 信息处理装置、信息处理方法 | |
US20120254264A1 (en) | Network-Attachable, File-Accessible Storage Drive | |
US20170270562A1 (en) | Combining user content with supplemental content at a data storage device | |
CN101256809B (zh) | 形成包括关于多个信息存储介质的信息的盘库的再现设备 | |
CN104065906B (zh) | 数字录像设备的录像方法及装置 | |
US10628385B2 (en) | Virtual collection of entities in sync process | |
JP2004187272A5 (zh) | ||
CN103064639A (zh) | 数据存储方法及装置 | |
CN112558873B (zh) | 嵌入式音视频数据存储、检索、删除方法及装置、存储器 | |
US20170084309A1 (en) | Video file creation device and video file creation method | |
US20150324414A1 (en) | Information processing device and information processing method | |
KR20100003912A (ko) | 동일 포맷의 미디어 파일 간에 미디어 정보 호환이 가능한미디어 파일을 생성하는 방법 및 장치와 미디어 파일을실행하는 방법 및 장치 | |
US20100131561A1 (en) | Disk layout method for object-based storage devices | |
CN102200986A (zh) | 存储装置和存储装置中的文件系统的生成方法 | |
US20090187578A1 (en) | Information processing device, information processing method and computer program | |
US20070016549A1 (en) | Method system, and digital media for controlling how digital assets are to be presented in a playback device | |
CN101620632B (zh) | 文件操作设备 | |
JP2007249155A (ja) | メディアファイル管理方法及びメディア再生装置 | |
CN101808243A (zh) | 一种基于快照的数据处理方法和设备 | |
US10963425B2 (en) | Data placement on magnetic data storage tape | |
JPWO2008146473A1 (ja) | フォーマット装置 | |
US11055217B2 (en) | Using additional intermediate buffer queues to identify interleaved media data to be read together | |
CN100576336C (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170419 |
|
RJ01 | Rejection of invention patent application after publication |