发明内容
本发明的目的在于提供一种基于云计算的海量视频文件存储系统、分析方法及其系统,保证切片精确,以使视频数据分析的解码完整和有效。
为解决上述技术问题,本发明的实施方式公开了一种基于云计算的海量视频文件智能分析方法,方法基于分布式计算模型,该模型包括:客户端、主节点和任务节点;
方法包括以下步骤:
客户端查询视频文件的管理信息,并根据该管理信息对视频文件切片并生成切片信息,其中每个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的;
客户端将切片信息上传给主节点;
客户端向主节点提交作业;
主节点将作业分解成若干个任务,将各任务及与任务相关的切片信息分别指派给多个分布式计算的任务节点;
各分布式计算的任务节点执行被指派的任务,根据任务相关的切片信息,获取切片,再根据管理信息将切片分解成若干个数据块,并对数据块分析;
各分布式归并的任务节点从各分布式计算的任务节点获取经分析得到的元数据,进行归并操作后输出。
本发明的实施方式还公开了一种基于云计算的海量视频文件智能分析系统,系统基于分布式计算模型,该模型包括:客户端、主节点和任务节点;
客户端,用于首先查询视频文件的管理信息,根据该管理信息对视频文件切片并生成切片信息,其中每个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,再将切片信息上传给主节点和向主节点提交作业;
主节点,用于首先将客户端指派的作业分解成若干个任务,再将各任务及与任务相关的切片信息分别指派给多个分布式计算的任务节点;
任务节点,用于分布式计算执行主节点指派的任务,首先根据任务相关的切片信息,获取切片,再根据管理信息将切片分解成若干个数据块,并对数据块分析;
任务节点,还用于分布式归并操作,首先从各分布式计算的任务节点获取经分析得到的元数据,再对所获取的元数据进行归并操作并输出。
本发明的实施方式还公开了一种基于云计算的海量视频文件存储系统,包括:一个存储管理节点和多个数据存储节点;
数据存储节点,用于存储划分视频文件所形成的至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的;
存储管理节点,用于存储视频文件的管理信息,该管理信息包括:存储的所有视频文件的文件名,每个视频文件的数据块个数,每个数据块所在的数据存储节点,每个数据块大小,每个数据块时间段。
本发明实施方式与现有技术相比,主要区别及其效果在于:
根据该管理信息对视频文件切片并生成切片信息,其中每个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,这样一个切片方式可以保证切片精确,以使海量视频数据分析的解码完整和有效。
在存储视频文件时,将视频文件划分为至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,这样一个切片方式可以保证切片精确,以使视频数据分析的解码完整和有效。同时,以数据块为单位来存储视频文件,具体应用中,可以采取一路通道一个文件的存储原则进行存储,不采用hadoop中对数据进行多份冗余的机制。
进一步地,使用输入插件查询视频文件的管理信息和获取切片,以及通过计算插件分析视频码流,便于提高系统的可扩展性。进一步地,各分布式计算的任务节点将经过分析得到的元数据写入本地磁盘并分区,其中分区的数目与分布式归并的任务节点数目一致,可以方便各分布式归并的任务节点从对应的磁盘分区中快速获取元数据。
进一步地,该分析系统根据计算量来进行负载均衡,耦合图像分析的输入输出密集型和计算密集型作业特性。
进一步地,通过索引记录中的I帧帧号、位置偏移、起始时间戳,可以对应地快速定位和查找到完整的视频帧序列,以方便解码。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种基于云计算的海量视频文件智能分析方法。图1是该基于云计算的海量视频文件智能分析方法的流程示意图。该基于云计算的海量视频文件智能分析方法基于分布式计算模型,该模型包括:客户端、主节点和任务节点。
如图1所示,具体地说,方法包括以下步骤:
在步骤101中,客户端查询视频文件的管理信息。
此后进入步骤102,客户端根据该管理信息对视频文件切片并生成切片信息,其中任一个切片中都包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的。
此后进入步骤103,客户端将切片信息上传给主节点。
此后进入步骤104,客户端向主节点提交作业。
此后进入步骤105,主节点将作业分解成若干个任务。
此后进入步骤106,主节点将各任务及与任务相关的切片信息分别指派给多个分布式计算的任务节点。
此后进入步骤107,各分布式计算的任务节点执行被指派的任务,根据任务相关的切片信息,获取切片。
此后进入步骤108,各分布式计算的任务节点执行被指派的任务,根据管理信息将切片分解成若干个数据块。
此后进入步骤109,各分布式计算的任务节点执行被指派的任务,对数据块分析。
此后进入步骤110,各分布式归并的任务节点从各分布式计算的任务节点获取经分析得到的元数据。
此后进入步骤111,各分布式归并的任务节点对所获取的元数据进行归并操作。
此后进入步骤112,各分布式归并的任务节点输出归并结果,此后结束本流程。
根据该管理信息对视频文件切片并生成切片信息,其中每一个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,这样一个切片方式可以保证切片精确,以使海量视频数据分析的解码完整和有效。
作为本发明的一个优选实施例,图2是该基于云计算的海量视频文件智能分析方法的视频数据格式示意图。如图2所示,在云计算系统中,每一个文件通常被分为很多个数据块分散存储在多个存储节点上的,这一点是所有的分布式存储的共性。在本发明中,为了后面的智能分析能顺利进行,在视频文件分块的时候会保证视频帧序列的完整性。在目前流行的视频编码中,视频文件是由帧序列组成,而帧序列由视频帧组成,视频帧根据类型分为I、B、P三种帧,一个帧序列里会有一个I帧和多个P、B帧。如果我们对视频进行分块的时候不考虑帧序列的边界,那么很可能一个数据块包含的帧序列是不完整的,那么对帧序列进行解码也会有问题。所以,在本发明中对视频文件进行分块的时候,会考虑视频数据的语义,划分给一个数据块的帧序列都是完整的。另外为了能够快速定位读取数据,会对I帧建立索引。索引文件记录了每一个帧序列中I帧的帧号、位置偏移、起始时间戳等信息。
本发明第二实施方式涉及一种基于云计算的海量视频文件智能分析方法。图3是该基于云计算的海量视频文件智能分析方法的流程示意图。
第二实施方式在第一实施方式的基础上进行了改进,主要改进之处在于:使用输入插件查询视频文件的管理信息和获取切片,以及通过计算插件分析视频码流,便于海量视频码流智能分析实时性能扩展和资源的有效利用,从而使各计算资源高效协调地实时分析大规模路数的视频数据流。通过索引记录中的I帧帧号、位置偏移、起始时间戳,可以对应地快速定位和查找到完整的视频帧序列,以方便解码。各分布式计算的任务节点将经过分析得到的元数据写入本地磁盘并分区,其中分区的数目与分布式归并的任务节点数目一致,可以方便各分布式归并的任务节点从对应的磁盘分区中快速获取元数据。具体地说:
切片信息包括智能分析规则。
客户端查询视频文件的管理信息的步骤,还包括以下子步骤:
客户端加载输入插件。
客户端通过输入插件查询视频文件的管理信息。
各分布式计算的任务节点获取切片的步骤,还包括以下子步骤:
各分布式计算的任务节点加载输入插件。
各分布式计算的任务节点通过输入插件获取切片。
各分布式计算的任务节点对数据块分析的步骤,还包括以下子步骤:
各分布式计算的任务节点加载计算插件。
各分布式计算的任务节点根据切片信息中的智能分析规则,通过计算插件对数据块进行分析。
在本发明的其他某些实施方式中,客户端加载的用于查询视频文件管理信息的输入插件,与各分布式计算的任务节点加载的用于获取切片的输入插件可以相同,也可以不同。
在本发明的其他某些实施方式中,也可以不使用插件,而是将相关代码直接写在主程序中。
各分布式计算的任务节点分析数据块的步骤,还包括以下子步骤:
根据预先为每个数据块中的视频帧序列建立的索引文件,查找和分析视频帧序列,该索引文件针对视频帧序列中的I帧建立索引,每个索引记录包括视频帧序列的I帧帧号、位置偏移、起始时间戳。
此外,可以理解,索引文件可针对一个数据存储节点中的每个数据块单独建立,也可以面向一个数据存储节点中的所有数据块中组合建立。
在各分布式计算的任务节点对数据块分析的步骤之后,还包括以下步骤:
各分布式计算的任务节点将经过分析得到的元数据写入本地磁盘并分区,其中分区的数目与分布式归并的任务节点数目一致。
各分布式归并的任务节点从各分布式计算的任务节点获取经分析得到的元数据的步骤,各分布式归并的任务节点对应地从各分布式计算的任务节点本地磁盘分区中拉取元数据。
此外,可以理解,在本发明的其他某些实施方式中,分区的数目与分布式归并的任务节点数目可以一致也可以不一致
作为本发明的优选实施例,如图3所示的视频数据处理流程,一个视频文件是由多个视频数据块组成,每个视频数据块包含的视频帧序列都是完整的。对一个视频文件进行分布式处理要经过如图3所示的视频数据处理流程:
1、对视频文件进行切片。在存储分块的基础上进行切片,一个或多个视频数据块被分到一个切片里面,这样一个视频文件就被分为多个切片。
2、切片被调度到多个负责计算任务的任务节点上进行图像分析运算。
3、经过图像分析运算得到的元数据写入该负责计算任务的任务节点上的本地硬盘并进行分区,分区的数目和负责归并red uce的节点数目一致。
4、负责归并任务的任务节点从各个负责计算任务的任务节点上拉取元数据。
5、负责归并任务的任务节点进行归并输出。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable Array Logic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Prog rammable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本发明第三实施方式涉及一种基于云计算的海量视频文件智能分析系统。图4是该基于云计算的海量视频文件智能分析系统的结构示意图。该基于云计算的海量视频文件智能分析系统系统基于分布式计算模型,该模型包括:客户端、主节点和任务节点。
客户端,用于首先查询视频文件的管理信息,根据该管理信息对视频文件切片并生成切片信息,其中一个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,再将切片信息上传给主节点和向主节点提交作业。
主节点,用于首先将客户端指派的作业分解成若干个任务,再将各任务及与任务相关的切片信息分别指派给多个分布式计算的任务节点。
任务节点,用于分布式计算执行主节点指派的任务,首先根据任务相关的切片信息,获取切片,再根据管理信息将切片分解成若干个数据块,并对数据块分析。
任务节点,还用于分布式归并操作,首先从各分布式计算的任务节点获取经分析得到的元数据,再对所获取的元数据进行归并操作并输出。
根据该管理信息对视频文件切片并生成切片信息,其中一个切片包含至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,这样一个切片方式可以保证切片精确,以使海量视频数据分析的解码完整和有效。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第四实施方式涉及一种基于云计算的海量视频文件智能分析系统。
第四实施方式在第三实施方式的基础上进行了改进,主要改进之处在于:该分析系统根据计算量来进行负载均衡,耦合图像分析的输入输出密集型和计算密集型作业特性。通过索引记录中的I帧帧号、位置偏移、起始时间戳,可以对应地快速定位和查找到完整的视频帧序列,以方便解码。各分布式计算的任务节点将经过分析得到的元数据写入本地磁盘并分区,其中分区的数目与分布式归并的任务节点数目一致,可以方便各分布式归并的任务节点从对应的磁盘分区中快速获取元数据。具体地说:
切片信息包括智能分析规则。
系统还包括:
输入插件,用于客户端查询视频文件的管理信息,或用于各分布式计算的任务节点获取切片。
计算插件,用于各分布式计算的任务节点根据切片信息中的智能分析规则对数据块进行分析。
客户端加载子模块,用于客户端加载输入插件。
任务节点加载子模块,用于各分布式计算的任务节点加载输入插件或计算插件。
此外,可以理解,在本发明的其他某些实施方式中,客户端加载的用于查询视频文件管理信息的输入插件,与各分布式计算的任务节点加载的用于获取切片的输入插件可以相同,也可以不同。
在本发明的其他某些实施方式中,也可以不使用插件,而是将相关代码直接写在主程序中。
在本发明的其他某些实施方式中,切片信息中还可以包括访问视频文件采集器访问信息和智能分析规则。以实时地获取采集器所采集的视频文件,该视频文件采集器包括数字视频录像机(Digital Video Recorder,简称“DVR”),网络摄像机,虚拟摄像机或DVR一路通道等。
系统还包括:
设置模块,用于预先每个数据块中的视频帧序列建立索引文件,该索引文件针对视频帧序列中的I帧建立索引,每个索引记录包括视频帧序列的I帧帧号、位置偏移、起始时间戳。
用于分布式计算操作的任务节点,包括以下子模块:
查找子模块,用于根据设置模块预先为每个数据块中的视频帧序列所建立的索引文件,查找视频帧序列。
分析子模块,用于分析查找子模块查找到的视频帧序列。
此外,可以理解,索引文件可针对一个数据存储节点中的每个数据块单独建立,也可以面向一个数据存储节点中的所有数据块中组合建立。
在各分布式计算的任务节点对数据块分析的步骤之后,还包括以下步骤:
各分布式计算的任务节点将经过分析得到的元数据写入本地磁盘并分区,其中分区的数目与分布式归并的任务节点数目一致。
用于分布式计算的任务节点,还包括以下子模块:
写入子模块,用于将经过分析子模块分析得到的元数据写入本地磁盘。
分区子模块,用于为写入子模块进行元数据写入的本地磁盘分区,其中分区的数目与分布式归并的任务节点数目一致。
各分布式归并的任务节点从各分布式计算的任务节点获取经分析得到的元数据的步骤,各分布式归并的任务节点对应地从各分布式计算的任务节点本地磁盘中拉取元数据。
此外,可以理解,各分布式归并的任务节点对应地从各分布式计算的任务节点本地磁盘分区中拉取元数据。
在本发明的其他某些实施方式中,分区的数目与分布式归并的任务节点数目可以一致也可以不一致。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明第五实施方式涉及一种基于云计算的海量视频文件存储系统。图5是该基于云计算的海量视频文件存储系统的结构示意图。该基于云计算的海量视频文件存储系统包括:一个存储管理节点和多个数据存储节点。
数据存储节点,用于存储划分视频文件所形成的至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的。
存储管理节点,用于存储视频文件的管理信息,该管理信息包括:存储的所有视频文件的文件名,每个视频文件的数据块个数,每个数据块所在的数据存储节点,每个数据块大小,每个数据块时间段。
在存储视频文件时,将视频文件划分为至少一个数据块,每个数据块包含至少一个视频帧序列,各数据块中的每一个视频帧序列都是完整的,这样一个切片方式可以保证切片精确,以使海量视频数据分析的解码完整和有效。同时,以数据块为单位来存储视频文件,具体应用中,可以采取一路通道一个文件的存储原则进行存储,不采用hadoop中对数据进行多份冗余的机制。
此外,可以理解,当需要获取某个视频文件的视频数据时,可以先查询存储管理节点中所存储的管理信息,从而查询到该视频文件的数据块个数,每个数据块所在的数据存储节点,每个数据块大小,每个数据块时间段,再在相应的数据存储节点上获取所需要的视频文件数据块。
本发明的实现也可以借鉴云计算的分布式计算模型MapReduce进行,相关细节和实现方法可以相互参考,如客户端、主节点和任务节点可以分别为HMapReduce框架中的负责提交分布式计算请求的客户端模块HJobClient、负责计算和归并任务的分配和控制的主节点HJobTracker和负责执行某些具体的计算和归并任务的任务节点HTaskTracker。
本发明第六实施方式涉及一种基于云计算的海量视频文件存储系统。图6是该基于云计算的海量视频文件存储系统的结构示意图。
第六实施方式在第五实施方式的基础上进行了改进,主要改进之处在于:通过索引记录中的I帧帧号、位置偏移、起始时间戳,可以对应地快速定位和查找到完整的视频帧序列,以方便解码。具体地说:
数据存储节点,还用于存储索引每个数据块中视频帧序列的的索引文件,该索引文件针对视频帧序列中的I帧建立索引,每个索引记录包括视频帧序列的I帧帧号、位置偏移、起始时间戳。
作为本发明的一个优选实施例,如图6所示,从提交作业到作业完毕整个流程:
1、客户端HJobClient向存储管理节点VM查询视频文件对应的管理信息,然后根据该管理信息对视频文件进行切片。
2、客户端HJobClient将切片信息上传给主节点HJobTracker。
3、客户端HJobClient向主节点HJobTracker提交作业。
4、主节点HJobTracker向各个分布式计算任务节点HTaskTracker指派任务,各个分布式计算任务节点HTaskTracker加载输入插件InputPlugin,从数据存储节点VS中获取视频数据。
5、各个分布式归并任务节点HTaskTracker加载计算插件MapPlugin进行图像分析,分析的结果进行归并后输出。
在本发明中,分布式计算框架HMapReduce、各种插件、图像分析算法库都是基于c/c++,解决了java实现的分布式计算框架效率低下,内存不能及时释放的问题,而这正是图像分析这种IO密集型和计算密集型作业所关注的。
此外,可以理解,索引文件可针对一个数据存储节点中的每个数据块单独建立,也可以面向一个数据存储节点中的所有数据块中组合建立。
需要说明的是,本发明各设备实施方式中提到的各单元或模块都是逻辑单元或模块,在物理上,一个逻辑单元或模块可以是一个物理单元或模块,也可以是一个物理单元或模块的一部分,还可以以多个物理单元或模块的组合实现,这些逻辑单元或模块本身的物理实现方式并不是最重要的,这些逻辑单元或模块所实现的功能的组合是才解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元或模块引入,这并不表明上述设备实施方式并不存在其它的单元或模块。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。