一种多个视频文件高速并行存储的方法及装置的制造方法

xiaoxiao2021-2-28  208

一种多个视频文件高速并行存储的方法及装置的制造方法
【技术领域】
[0001]本发明实施例涉及流媒体处理领域,尤其涉及一种多个视频文件高速并行存储的方法及装置。
【背景技术】
[0002]视频监控系统中,流媒体服务器通常需要同时处理并存储多路视频录像,从各路摄像单元拍摄的视频信息以流式传输的方式通过无线或有线网络传输至流媒体服务器中,根据需要,这些视频信息通常需要在流媒体服务器中写入存储节点中,以至少保留一段时间或做永久保存。
[0003]从各路摄像单元拍摄的视频信息,形成多个视频流,因此流媒体服务器往往需要同时处理多个高并发的视频录像,以写入存储节点。由于多个视频流是并行的实时接收和存储,所以,被写入存储节点时,尤其是普通机械硬盘,会由于并发写入的原因而呈现各个视频流相互间隔着随机写入存储节点,致使存储节点的硬盘需要对应各视频流不断的执行寻址操作,这导致写入效率变慢,甚至因此而导致整个流媒体服务器或者工作站的处理效率变慢以至瘫痪。
[0004]目前的存储节点从成本以及存储容量来考虑,又通常以机械硬盘为主要的存储设备,而往机械硬盘中存储高速视频录像的存储效率则往往会成为整个流媒体服务器的瓶颈,当多路视频文件同时需要存入机械硬盘时,往往造成磁头寻道时间过短,又或者产生对于同一个较大的视频文件,被分散保存到整个磁盘的不同地方,使得产生较多个文件碎片,浪费大量的磁盘空间,磁盘上的文件碎片越多,再对磁盘文件进行读取时以及新建文件的时间就会越长,如此给使用者造成了极大的不便。

【发明内容】

[0005]本发明提供一种多个视频文件高速并行存储的方法及装置,以实现流媒体服务器处理并写入高并发的较多个视频流时的效率大幅提升。
[0006]第一方面,本发明实施例提供了一种多个视频文件高速并行存储的方法,该方法包括:
[0007]流媒体服务器接收至少两个视频文件对应的视频流数据;
[0008]所述流媒体服务器将所述视频流数据在内存中进行存储;
[0009]所述流媒体服务器识别到视频文件的视频流数据传输结束时,形成所述视频文件的迁移任务;
[0010]所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中。
[0011]第二方面,本发明实施例还提供了一种多个视频文件高速并行存储的装置,配置于流媒体服务器中,所述装置包括:
[0012]接收单元,用于接收至少两个视频文件对应的视频流数据;
[0013]存储单元,用于将所述视频流数据在内存中进行存储;
[0014]迀移任务形成单元,用于识别到视频文件的视频流数据传输结束时,形成所述视频文件的迀移任务;
[0015]迀移存储单元,用于根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中。
[0016]本发明通过将多路视频流缓存至流媒体服务器的内存文件系统中形成视频文件,并根据形成的迀移任务将内存中形成的视频文件逐一写入到存储节点如机械硬盘、磁盘阵列或者闪存中,大大地提高了流媒体服务器对多路视频流的处理效率,同时这种方式又极大地减少了文件碎片的产生,提高了磁盘的利用效率以及文件读取效率。
【附图说明】
[0017]图1为本发明实施例一中的多个视频文件高速并行存储的方法流程图;
[0018]图2是本发明实施例一中的负载动态迀移时的实施示意图;
[0019]图3是本发明实施例一中的整体的视频流数据转移流程示意图;
[0020]图4是本发明实施例一中的任务消息队列创建流程图;
[0021]图5是本发明实施例二中的多个视频文件高速并行存储的装置框图。
【具体实施方式】
[0022]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0023]本发明所述的一种多个视频文件高速并行存储的方法,运用于存在有多个流式媒体在传输至流媒体服务器的过程中需要写入存储节点的情形中,本发明的基本思想是:在流媒体服务器接收视频流数据之后,通过在内存中虚拟硬盘形成文件系统以使视频流数据在内存中录制形成视频文件,并根据迀移任务将形成的视频文件写入到存储节点中,从而使得流媒体服务器高并发随机接收的视频文件能够从内存中以极高的速度写入存储节点,以提高高并发的视频流数据在随机存储到存储节点时的处理效率,大幅减少形成的文件碎片。
[0024]实施例一
[0025]如图1所示,为本发明实施例的方法流程图,本发明实施例涉及一种多个视频文件高速并行存储的方法,运用于具有较多个视频流数据需要写入到存储节点的场景,该方法包括以下步骤:
[0026]步骤S101:流媒体服务器接收至少两个视频文件对应的视频流数据;
[0027]其中,流媒体服务器一般为一种工作站,其至少能够接收数据并将数据存储于某一物理的存储节点,视频流数据将连续的音频和/或视频信息压缩后通过网络传输,以用于所述流媒体服务器的接收和存储,视频流数据在传输、下载或者录制完成以后即形成视频文件。各视频文件所对应的视频流数据,需要流媒体服务器持续一段时间进行接收。
[0028]步骤S102:所述流媒体服务器将所述视频流数据在内存中进行存储;
[0029 ]两个以上的各所述视频流数据被所述流媒体服务器接收以后,首先由所述流媒体服务器的控制单元将各所述视频流数据缓冲至所述流媒体服务器的内存中,然后将各所述视频流数据录制完成以后形成的视频文件存储在该内存中;
[0030]本实施例中,对所述流媒体服务器的内存的至少一部分进行硬盘虚拟化,并形成内存文件系统,在该内存文件系统进行各所述视频流数据的缓存,即在内存文件系统中形成了一套完整的文件系统,在该内存文件系统中的视频文件存在形式,与在存储介质如机械硬盘中的视频文件存在形式相同。
[0031]利用内存文件系统虚拟技术将流媒体服务器的一部分内存虚拟成内存文件系统并作为各视频文件的暂时存储。
[0032]流媒体服务器的内存通常为几十G到上百G(GB,Gigabyte,十亿字节),以作为与流媒体服务器的控制单元与存储节点之间的数据中转站,对该内存的一部分进行硬盘虚拟化,同时保留剩余部分的内存进行该流媒体服务器的常规数据交换。
[0033]由于流媒体服务器的内存较大,因此视频流数据在内存文件系统进行视频流数据的录制通常得以进行,而不会出现视频录制不能完成的情形,而且在内存文件系统形成的视频文件可以根据多个视频流数据的个数多少来划分视频文件的大小,同时也可以根据需要对该内存文件系统的大小进行或大或小的调整。在本实施例中的车载视频监控系统中,由于通常录制完成的一个视频文件较小,因此不存在内存不足的情形,但在本发明的其它场景中同样也可以录制接近内存大小的视频文件,因此,对内存的硬盘虚拟化并不以此为限。
[0034]优选地,所述的内存文件系统为在内存的一部分进行了文件系统虚拟化之后,将其中的一部分内存虚拟为文件系统,在该文件系统中由于利用了内存作为文件系统,因此内存文件系统具有与内存一样极优越的写入速度,同时,录制完成的各视频流数据在该内存文件系统中是以文件的形式存在的。
[0035]步骤S103:所述流媒体服务器识别到视频文件的视频流数据传输结束时,形成所述视频文件的迀移任务;
[0036]视频流数据以连续的形式不断地通过网络传输至流媒体服务器,并由流媒体服务器存储到内存形成的文件系统中,在本发明实施例中,其运用于某一车载视频监控场景中,由于车载视频监控系统处于较长 时间的开启状态,因此,同一路的视频流数据可在达到一定容量之后即形成视频文件,并形成该视频文件的迀移任务,由于在实际应用中每一视频文件远较于在所述流媒体服务器的内存中开辟的内存文件系统小,因此当其中的一路视频流数据中止(如视频流数据源设备的关闭)传输之后,即视为识别到所述视频文件的视频流数据传输结束或者完成录制,从而形成各所述视频文件的迀移任务。
[0037]优选地,在本发明实施例中,在识别到其中的一路视频流数据传输结束时,形成所述视频文件的迀移任务,具体包括:
[0038]所述流媒体服务器根据所述视频文件传输结束的时间,将所述视频文件的迀移任务顺序添加至任务消息队列中。
[0039]由所述流媒体服务器为所述内存中形成的各视频文件创建一任务消息队列,各所述视频文件按照其录制完成的时间顺序添加至该任务消息队列中。
[0040]所述任务消息队列为一具有FIF0(First in First out,先入先出)特性的任务队列,在该任务消息队列包括有各所述视频文件的迀移任务,对各迀移任务所对应的视频文件的录制完成时间或者传输结束的时间为顺序,使在该任务队列中的迀移任务所对应的视频文件按照该顺序一一写入到存储节点中。
[0041]步骤S104:所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中。
[0042]所述流媒体服务器根据形成的迀移任务从内存文件系统中提取对应的视频文件并传输写入到存储节点中。
[0043]结合图1和图3所示,在流媒体服务器与存储节点之间,通过流媒体服务器的内存上至少一部分硬盘虚拟化以后形成的内存文件系统,是接收高并发的视频流数据并形成视频文件的,在该内存文件系统中,视频文件系统是以在硬盘上存放文件同样的格式存在,因此,在创建针对各视频文件以FIFO为特性的任务消息队列后,各视频文件则按照顺序以极高的速度完整地写入到存储介质中永久存储。
[0044]进一步地,当发生存储节点容量已满或者本存储节点不适宜再进行存储时,则对本发明实施例的任务消息队列中的各视频文件进行动态迀移,具体地,如图2所示,本步骤具体包括:
[0045]步骤S201:所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件;
[0046]当所述迀移任务包含于任务消息队列中时,则所述流媒体服务器根据该任务消息队列中的顺序,从内存文件系统中提取与该顺序所对应的视频文件。
[0047]步骤S202:所述流媒体服务器判断当前存储节点是否满足当前视频文件的存储要求;
[0048]对当前存储节点的判断包括:存储容量的判断、存储状态的判断以及存储节点的物理性质的判断等等。
[0049]当所述流媒体服务器判断当前存储节点满足当前视频文件的存储要求时,则将当前视频文件迀移至当前存储节点;
[0050]当所述流媒体服务器判断当前存储节点未满足当前视频文件的存储要求时,则根据调度服务器的调节机制,通过有线或者无线传输的方式,将在该内存文件系统中的任务消息队列的各视频文件传输并存储到另一存储节点,并将该另一存储节点更新为当前存储节点。
[0051]在每次进行视频文件的迀移时,均可以执行本步骤的判断操作,以实现对视频文件的动态迀移。
[0052]本发明实施例的另一具体场景中,所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中,包括有另一种方式:
[0053]所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件的文件目录信息,所述文件目录信息包括文件名称、文件路径以及文件大小;
[0054]文件目录信息为各所述视频文件的文件名称、文件路径以及文件大小等信息在内存空间中的物理地址对应关系,在计算机语言中通常以项的方式存在,其占用的字节小,并且能够很准确地指向其对应的物理地址。
[0055]所述流媒体服务器向所述存储节点发送所述文件目录信息,以所述文件目录信息为索引,向所述存储节点中写入与所述文件目录信息对应的视频文件。
[0056]所述文件目录信息发送至存储节点,在需要将所述任务消息队列中的视频文件按照顺序写入到存储节点时,所述通过所述文件目录建立所述内存与所述存储节点之间的联系,使所述文件目录信息对应的视频文件能够更快地写入到视频文件中。
[0057]结合图4所示,为本发明实施例的文件迀移流程,流媒体服务器开始接收各视频流数据之后,在其内存(硬盘虚拟化之后)形成的文件系统中接收各视频流数据,即在内存中进行缓冲并进行第一次的存储,当检测到其中的某一视频流结束时,则关闭该视频流数据的缓冲过程并在形成视频文件之后压入任务消息队列,进一步地,在该任务消息队列中的各项视频文件迀移任务以其视频文件完成的时间为顺序一一写入到存储节点中,当检测到内存中所有的传输均结束时,则取消对内存的硬盘虚拟化恢复内存正常,当内存中具有任意一个正常传输过程中的视频流数据时,则由流媒体服务器继续接收并在内存中缓冲存储以形成视频文件。
[0058]通过硬盘虚拟化使计算机或者流媒体服务器内存的一部分来模拟成硬盘,在D0S、windows的操作平台下可以由相应的软件来给它的内存空间来实现这种模拟,在LINUX系统可以通过其内核支持的机制来实现。
[0059]本发明实施例中通过将高并发的视频流数据在内存文件系统形成视频文件,并根据视频文件创建FIFO任务消息队列,让任务消息队列中的各视频文件按照先入先出的队列特性写入到存储节点中,能够大幅提升高并发的视频流数据写入到存储节点时的处理效率,尤其是该存储节点为一种机械硬盘(在写入时需要寻找柱面及簇)或者磁盘阵列的情况时对于写入速率的提升更为明显,在写入效率提升的同时,由于是通过内存以视频文件的形式写入,因此还能够大幅降低在存储节点产生的文件碎片,提升存储节点的容量利用率以及后期的视频文件读取速度。
[0060]实施例二
[0061]如图5所示,为本发明实施例二中的多个视频文件高速并行存储的装置框图。本发明实施例中涉及一种多个视频文件高速并行存储的装置,其主要包括有接收单元501、存储单元502、迀移任务形成单元503以及迀移存储单元504。
[0062]其中,所述接收单元501,用于流媒体服务器接收至少两个视频文件对应的视频流数据,流式媒体如本发明实施例中的视频流数据在连续的传输过程中一般被流媒体服务器接收于控制单元中,并通过内存对接收的视频流数据作暂时的中转站。
[0063]所述存储单元502用于所述流媒体服务器将所述视频流数据在内存中进行存储,至少对内存的一部分进行硬盘虚拟化,并形成内存文件系统,使在内存上形成与存储介质如硬盘上完全相同的内存文件系统,以用于存储在各类存储介质上存放格式完全相同的文件(本专利申请中指视频文件)。
[0064]所述迀移任务形成单元503,用于所述流媒体服务器识别到视频文件的视频流数据传输结束时,形成所述视频文件的迀移任务,在内存文件系统完成对各路视频流数据所对应的视频文件的录制或传输结束后,针对完成传输的视频文件形成其迀移任务,以从所述内存中迀移到存储介质,如机械硬盘、闪存以及磁盘阵列等。
[0065]优选地,在本发明实施例中,所述迀移任务形成单元还包括消息队列添加单元,所述消息队列添加单元用于形成所述视频文件的迀移任务之后所述视频文件传输结束的时间,将所述视频文件的迀移任务顺序添加至任务消息队列中。
[0066]以各所述视频文件传输结束的时间或者完成录制的时间为顺序,创建一任务消息队列,以各所述视频文件的录制完成时间为顺序将各所述视频文件或其对应的迀移任务压入到该任务消息队列中。
[0067]所述迀移存储单元504用于所述流媒体服务器根 据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中,在所述内存文件系统中为完成录制或者传输结束的视频文件,而非是在传输过程中的连续的视频流数据,通过将传输结束的视频文件整个迀移到存储节点,可以大幅减少通过向存储节点中连续不断地保存视频流数据而形成的大量文件碎片,同时也方便了进一步在该存储节点对各视频文件的读取以及转换。
[0068]进一步地,所述迀移存储单元504包括任务提取子单元以及判断子单元,其中:
[0069]所述任务提取子单元用于所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件;
[0070]所述判断子单元用于所述流媒体服务器判断当前存储节点的存储容量是否满足当前视频文件的存储要求;
[0071 ]若是,则将当前视频文件迀移至当前存储节点;
[0072]若否,则以另一存储节点更新为当前存储节点,并返回执行前述判断操作。
[0073]通过对当前存储节点的存储容量的判断,可以使所述实现对存储节点的动态负载迀移,在本发明实施例中,在车载视频监控系统中,通过系统中的中间调度服务器来实现,在判断单元检测到当前存储节点的存储容量或者存在坏道等不良状态不适宜存储情形时,可以通过中间服务器来实现存储节点的动态迀移,将在内存文件系统中完成的视频文件从任务消息队列中迀出时传输到其它的存储节点。
[0074]在本发明实施例中可通过建立与本地存储节点并行的分布式存储节点系统,通过流媒体服务器网络实现各存储节点的连接,在检测到本地存储节点容量已满时,则通过网络通讯申请下一个存储节点,并将所述任务消息队列中的各视频文件按照FIFO的顺序写入一下一个存储节点。
[0075]进一步地,所述迀移存储单元503包括文件目录提取子单元以及索引子单元,其中:
[0076]所述文件目录提取子单元,用于所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件的文件目录信息,所述文件目录信息包括文件名称、文件路径以及文件大小;
[0077]所述索引子单元,用于所述流媒体服务器向所述存储节点发送所述文件目录信息,以所述文件目录信息为索引,向所述存储节点中写入与所述文件目录信息对应的视频文件。
[0078]通过文件目录的形式,在所述内存中录制完成或者传输结束时存在较多个视频文件时,在写入视频文件时,从任务消息队列中以时间为序找到相应的文件目录信息并从内存中提取相应的文件写入到存储节点中。
[0079]同时,也可在存储节点的相应位置镜像生成对应于各视频文件的文件目录,在将视频文件写入到存储节点时直接将该视频文件拷贝至文件目录位置。
[0080]本领域普通技术人员应该明白,本发明实施例的装置中的各单元可以用通用的计算装置来实现,各单元可以集中在单个计算装置或者计算装置组成的网络组中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
[0081]注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
【主权项】
1.一种多个视频文件高速并行存储的方法,其特征在于,该方法包括: 流媒体服务器接收至少两个视频文件对应的视频流数据; 所述流媒体服务器将所述视频流数据在内存中进行存储; 所述流媒体服务器识别到视频文件的视频流数据传输结束时,形成所述视频文件的迀移任务; 所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中。2.根据权利要求1所述的方法,其特征在于,形成所述视频文件的迀移任务之后,还包括: 所述流媒体服务器根据所述视频文件传输结束的时间,将所述视频文件的迀移任务顺序添加至任务消息队列中。3.根据权利要求1或2所述的方法,其特征在于,所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中,包括: 所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件; 所述流媒体服务器判断当前存储节点的存储容量是否满足当前视频文件的存储要求; 若是,则将当前视频文件迀移至当前存储节点; 若否,则以另一存储节点更新为当前存储节点,并返回执行前述判断操作。4.根据权利要求1所述的方法,其特征在于,所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中,包括: 所述流媒体服务器根据形成的迀移任务,从内存中提取任务对应的视频文件的文件目录信息,所述文件目录信息包括文件名称、文件路径以及文件大小; 所述流媒体服务器向所述存储节点发送所述文件目录信息,以所述文件目录信息为索引,向所述存储节点中写入与所述文件目录信息对应的视频文件。5.根据权利要求1所述的方法,其特征在于,所述存储节点为机械硬盘、闪存或磁盘阵列。6.—种多个视频文件高速并行存储的装置,其特征在于,配置在流媒体服务器中,所述装置包括: 接收单元,用于接收至少两个视频文件对应的视频流数据; 存储单元,用于将所述视频流数据在内存中进行存储; 迀移任务形成单元,用于识别到视频文件的视频流数据传输结束时,形成所述视频文件的迁移任务; 迀移存储单元,用于根据形成的迀移任务,从内存中提取任务对应的视频文件,迀移存储至存储节点中。7.如权利要求6所述的装置,其特征在于,还包括: 消息队列添加单元,用于形成所述视频文件的迀移任务之后,根据所述视频文件传输结束的时间,将所述视频文件的迀移任务顺序添加至任务消息队列中。8.如权利要求6或7所述的装置,其特征在于,所述迀移存储单元包括: 任务提取子单元,用于根据形成的迀移任务,从内存中提取任务对应的视频文件; 判断子单元,用于判断当前存储节点的存储容量是否满足当前视频文件的存储要求;若是,则将当前视频文件迀移至当前存储节点;若否,则以另一存储节点更新为当前存储节点,并返回执行前述判断操作。9.如权利要求6所述的装置,其特征在于,所述迀移存储单元包括: 文件目录提取子单元,用于根据形成的迀移任务,从内存中提取任务对应的视频文件的文件目录信息,所述文件目录信息包括文件名称、文件路径以及文件大小; 索引子单元,用于向所述存储节点发送所述文件目录信息,以所述文件目录信息为索引,向所述存储节点中写入与所述文件目录信息对应的视频文件。10.根据权利要求6所述的装置,其特征在于,所述存储节点为机械硬盘、闪存或磁盘阵列。
【专利摘要】本发明公开了一种多个视频文件高速并行存储的方法及装置,所述方法包括:流媒体服务器接收至少两个视频文件对应的视频流数据;所述流媒体服务器将所述视频流数据在内存中进行存储;所述流媒体服务器识别到视频文件的视频流数据传输结束时,形成所述视频文件的迁移任务;所述流媒体服务器根据形成的迁移任务,从内存中提取任务对应的视频文件,迁移存储至存储节点中。本发明的有益效果为:通过在内存中形成视频文件按照任务队列顺序写入存储节点,大幅提升对高并发的多个视频流数据在写入存储节点时的处理效率。
【IPC分类】G06F17/30, G06F3/06
【公开号】CN105488108
【申请号】CN201510810553
【发明人】李文海, 李良, 李基源, 郭伟文, 仲兆峰
【申请人】广州日滨科技发展有限公司
【公开日】2016年4月13日
【申请日】2015年11月19日

最新回复(0)