本发明涉及视频数据采集技术领域,尤其涉及一种基于linux多核环境的视频采集方法及装置。
背景技术:
监控是为了更好的保护我们的人身和财产安全,在出现纠纷或有分歧事件时,作为一个还原现场的手段,成为了人们生活中不可或缺的一道安全屏障。监控在银行、超市、商场、店面、工厂、学校、小区、网吧等公共区域随处可见,各地公安机关依靠视频监控的辅助破案率也是急速的飙升,随着平安城市的建设,监控系统愈将融入我们的生活发挥着他的作用。
目前市面上的采集视频数据一般都是利用多个线程对应多个摄像头,其缺点在于线程数量过多,导致cpu在切换线程时会浪费很多时间,从而降低了视频采集的效率。
技术实现要素:
本发明的主要目的在于提供一种基于linux多核环境的视频采集方法及装置,旨在提高视频采集的效率。
为实现上述目的,本发明提供的一种基于linux多核环境的视频采集方法包括如下步骤:
下发采集视频数据的指令至相应的摄像机;
启动相应线程接收摄像机发送过来的视频数据;
将所接收到的视频数据存储至数据存储库中;
其中,所述接收摄像机发送过来的视频数据的步骤之前还包括:
启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据。
优选地,所述下发采集视频数据的指令至相应的摄像机的步骤之前包括:
与所述摄像机建立传输通信;
启动与所述传输通信适配的udp端口以采集所述摄像机发出的视频数据。
优选地,所述数据存储库为分布式文件系统的存储集群。
优选地,所述启动相应线程接收摄像机发送过来的视频数据的步骤之前还包括:
采用哈希算法来保证视频数据流有序地加入到接收队列中。
优选地,所述下发采集视频数据的指令至相应的摄像机的步骤之前还包括:
发送相应的探测信息至范围内的摄像机;
若接收到摄像机的反馈信息,则确认与该摄像机配对成功;
发送采集视频数据的指令至配对成功的摄像机。
此外,为实现上述目的,本发明还提供一种基于linux多核环境的视频采集装置,所述基于linux多核环境的视频采集装置包括:
第一发送模块,用于下发采集视频数据的指令至相应的摄像机;
接收模块,用于启动相应线程接收摄像机发送过来的视频数据;
存储模块,用于将所接收到的视频数据存储至数据存储库中;
其中,所述基于linux多核环境的视频采集装置还包括:
第一启动模块,用于启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据。
优选地,所述基于linux多核环境的视频采集装置还包括:
通信模块,用于与所述摄像机建立传输通信;
启动模块,用于启动与所述传输通信适配的udp端口以采集所述摄像机发出的视频数据。
优选地,所述数据存储库为分布式文件系统的存储集群。
优选地,所述接收模块还用于采用哈希算法来保证视频数据流有序地加入到接收队列中。
优选地,所述基于linux多核环境的视频采集装置包括:
探测模块,用于发送相应的探测信息至范围内的摄像机;
配对模块,用于当接收到摄像机的反馈信息时,则确认与该摄像机配对成功;
第二发送模块,用于发送采集视频数据的指令至配对成功的摄像机
本发明通过下发采集视频数据的指令至相应的摄像机;接收摄像机发送过来的视频数据;将所接收到的视频数据存储至数据存储库中;其中,所述接收摄像机发送过来的视频数据的步骤之前还包括:启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据。通过一个线程对应多个摄像机采集多个摄像机的视频数据并配合使用epoll网络模型,提高了对摄像机视频采集的效率。
附图说明
图1为本发明基于linux多核环境的视频采集方法第一实施例的流程示意图;
图2为本发明基于linux多核环境的视频采集方法第二实施例的流程示意图;
图3为本发明基于linux多核环境的视频采集方法第三实施例中与摄像机配对的细化流程示意图;
图4为本发明基于linux多核环境的视频采集装置第一实施例的功能模块示意图;
图5为本发明基于linux多核环境的视频采集装置第二实施例中的功能模块示意图;
图6为本发明基于linux多核环境的视频采集装置第三实施例中的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于linux多核环境的视频采集方法,参照图1,在第一实施例中,该基于linux多核环境的视频采集方法包括:
步骤s10,下发采集视频数据的指令至相应的摄像机;
在监控系统中包括众多的摄像机和服务器,本发明实施例提供的基于linux多核环境的视频采集方法用于实现一种多核环境下一个线程对应多个摄像机的视频数据采集方法,提高视频采集效率。
本实施例中,服务器下发采集视频数据的指令至相应的摄像机,这里所说的相应的摄像机指的是能与所述服务器配对或者是服务器能够搜寻到的摄像机,一个服务器可能可以与多个摄像机配对成功或者搜寻到相应网络内的多个摄像机,那么服务器将下发采集视频数据的指令至多个与之配对的摄像机。
本实施例中,为了充分利用多核环境下采集视频数据的效率,为每一个核配备epoll网络模型,使每个核的性能都能够被充分利用,大大提高了采集的效率。但是要注意的是epoll的创建数目最大不能超过系统的核数。
步骤s21,启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据;
步骤s20,启动相应线程接收摄像机发送过来的视频数据;
摄像机接收采集视频数据的指令后,采集相应的视频数据,将采集后的视频数据发送至服务器。服务器接收摄像机发送过来的视频数据前,服务器系统将启动epoll网络模型,此时,若监听到存在可读事件,即有视频数据传送过来,则响应相应的线程接收摄像机发送过来的视频数据。
需要说明的是,在接收视频数据过程中,同时采用哈希算法来保证视频数据流有序地加入到接收队列中。
步骤s30,将所接收到的视频数据存储至数据存储库中。
从摄像机中采集到视频数据后以对象的方式写入后台磁盘中,其中,所述后台磁盘为分布式文件系统的存储集群。
以对象的方式写入的优点在于对象是通过分布式文件系统分配数据到与配置的相关磁盘中,根据一定的算法实现存储,相对于直接存储到单个磁盘,容量更大,出现单点磁盘故障能够进行数据迁移与恢复,保证了数据的可靠性。
此外,与市场上的现有技术相比较,通过采用市场上最先进的h264以及h265编码降低了传输的码率,在同等带宽下节省了存储空间,同时在分布式存储过程中利用分布式存储特点将视频数据并发的存储到各个子存储系统中,实现高效的视频数据存储,过程中记录下通道号、日期、时间等参数。
之后如果要查看某历史视频数据,则根据查询条件如:通道号、日期、时间等参数从分布式存储集群中找到最优路径,读取视频流信息,并转发给监看平台。
所述服务器在接收视频数据后将视频数据并发的存储到各个子存储系统中,实现了高效的视频数据存储,且便于日后查找所述视频数据。此外,采用对象的写入方式使得后台磁盘相对于直接存储到单个磁盘,容量更大,出现单点磁盘故障能够进行数据迁移与恢复,保证了数据的可靠性。
本发明通过下发采集视频数据的指令至相应的摄像机;接收摄像机发送过来的视频数据;将所接收到的视频数据存储至数据存储库中;其中,所述接收摄像机发送过来的视频数据的步骤之前还包括:启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据。通过一个线程对应多个摄像机采集多个摄像机的视频数据并配合使用epoll网络模型,提高了对摄像机视频采集的效率。
进一步地,请参阅图2,基于本发明基于linux多核环境的视频采集方法第一实施例,在本发明基于linux多核环境的视频采集方法第二实施例中,上述步骤s10之前还包括:
步骤s11,与所述摄像机建立传输通信;
步骤s12,启动与所述传输通信适配的udp端口以采集所述摄像机发出的视频数据。
本实施例中,通过实时流传输协议(realtimestreamingprotocol,rtsp)来建立传输通信。
所述传输通信包括向所述网络摄像机依次发送option请求、describe请求、setup请求和play请求,并逐一得到确认成功的信息。具体的,可以设定确认成功的返回值为100。
在所述传输通信准备就绪后,启动用户数据报协议(userdatagramprotocol,udp)端口,所述视频数据通过所述udp端口采用实时传输协议(real-timetransportprotocol,rtp)将所述视频数据发送至所述服务器,所述服务器接收所述视频数据。所述rtp中包括序列号和时间戳等参数。
本实施例中,通过所述rtp中的序列号和时间戳等参数方便所述服务器与所述网络摄像机在传输通信中保证数据的可靠性和完整性,且便于日后查找所述视频数据。
本实施例通过与摄像机建立传输通信,采用udp传输视频数据,选择udp的话网络很好的情况下很流畅,即使在网络状况很不理想的情况下会将帧丢弃,而不是一直在效验数据,因此不会卡住,保证了视频的流畅性。
进一步地,请参阅图3,基于本发明基于linux多核环境的视频第二实施例,在本发明基于linux多核环境的视频第三实施例中,上述步骤s10之前还包括:
步骤s101,发送相应的探测信息至范围内的摄像机;
本实施例中,服务器在下发相应的采集视频数据至相应的服务器之前,先发送相应的探测信息至范围内的摄像机。可以理解的是,当服务器在网络中发送探测信息时,只要是网络摄像机能收到所述探测信息,则都会针对所述探测信息发回反馈信息,其中反馈信息包括了自身的ip地址等信息。
步骤s102,若接收到摄像机的反馈信息,则确认与该摄像机配对成功;
步骤s103,发送采集视频数据的指令至配对成功的摄像机。
进一步地,如果摄像机收到探测信息后发送反馈信息至相应的服务器,则表示该摄像机是能与该服务器进行配对的摄像机,此时,服务器可以根据需要进一步发送采集视频数据的信息至该摄像机。
本实施例,通过与所述摄像机进行配对确认,从而与能与服务器进行配对的摄像机进行通讯连接,进一步采集该摄像机的视频数据,提高视频采集数据的效率。
本发明提供一种基于linux多核环境的视频采集装置,参照图4,在第一实施例中,该基于linux多核环境的视频采集装置包括:
第一发送模块10,用于下发采集视频数据的指令至相应的摄像机;
在监控系统中包括众多的摄像机和服务器,本发明实施例提供的基于linux多核环境的视频采集方法用于实现一种多核环境下一个线程对应多个摄像机的视频数据采集方法,提高视频采集效率。
本实施例中,服务器下发采集视频数据的指令至相应的摄像机,这里所说的相应的摄像机指的是能与所述服务器配对或者是服务器能够搜寻到的摄像机,一个服务器可能可以与多个摄像机配对成功或者搜寻到相应网络内的多个摄像机,那么服务器将下发采集视频数据的指令至多个与之配对的摄像机。
本实施例中,为了充分利用多核环境下采集视频数据的效率,为每一个核配备epoll网络模型,使每个核的性能都能够被充分利用,大大提高了采集的效率。但是要注意的是epoll的创建数目最大不能超过系统的核数。
第一启动模块21,用于启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据;
接收模块20,用于启动相应线程接收摄像机发送过来的视频数据;
摄像机接收采集视频数据的指令后,采集相应的视频数据,将采集后的视频数据发送至服务器。服务器接收摄像机发送过来的视频数据前,服务器系统将启动epoll网络模型,此时,若监听到存在可读事件,即有视频数据传送过来,则响应相应的线程接收摄像机发送过来的视频数据。
需要说明的是,在接收视频数据过程中,同时采用哈希算法来保证视频数据流有序地加入到接收队列中。
存储模块30,用于将所接收到的视频数据存储至数据存储库中。
从摄像机中采集到视频数据后以对象的方式写入后台磁盘中,其中,所述后台磁盘为分布式文件系统的存储集群。
以对象的方式写入的优点在于对象是通过分布式文件系统分配数据到与配置的相关磁盘中,根据一定的算法实现存储,相对于直接存储到单个磁盘,容量更大,出现单点磁盘故障能够进行数据迁移与恢复,保证了数据的可靠性。
此外,与市场上的现有技术相比较,通过采用市场上最先进的h264以及h265编码降低了传输的码率,在同等带宽下节省了存储空间,同时在分布式存储过程中利用分布式存储特点将视频数据并发的存储到各个子存储系统中,实现高效的视频数据存储,过程中记录下通道号、日期、时间等参数。
之后如果要查看某历史视频数据,则根据查询条件如:通道号、日期、时间等参数从分布式存储集群中找到最优路径,读取视频流信息,并转发给监看平台。
所述服务器在接收视频数据后将视频数据并发的存储到各个子存储系统中,实现了高效的视频数据存储,且便于日后查找所述视频数据。此外,采用对象的写入方式使得后台磁盘相对于直接存储到单个磁盘,容量更大,出现单点磁盘故障能够进行数据迁移与恢复,保证了数据的可靠性。
本实施例中,基于linux多核环境实现视频数据的采集,采用一个线程对应多个摄像头的视频数据采集方法,提高了视频数据采集效率。
本发明通过下发采集视频数据的指令至相应的摄像机;接收摄像机发送过来的视频数据;将所接收到的视频数据存储至数据存储库中;其中,所述接收摄像机发送过来的视频数据的步骤之前还包括:启动epoll网络模型,当监听到存在可读事件时,则响应相应线程处理数据。通过一个线程对应多个摄像机采集多个摄像机的视频数据并配合使用epoll网络模型,提高了对摄像机视频采集的效率。
进一步地,请参阅图5,基于本发明基于linux多核环境的视频采集装置第一实施例,在本发明基于linux多核环境的视频采集装置第二实施例中,基于linux多核环境的视频采集装置还包括:
通信模块11,用于与所述摄像机建立传输通信;
第二启动模块12,用于启动与所述传输通信适配的udp端口以采集所述摄像机发出的视频数据。
本实施例中,通过实时流传输协议(realtimestreamingprotocol,rtsp)来建立传输通信。
所述传输通信包括向所述网络摄像机依次发送option请求、describe请求、setup请求和play请求,并逐一得到确认成功的信息。具体的,可以设定确认成功的返回值为100。
在所述传输通信准备就绪后,启动用户数据报协议(userdatagramprotocol,udp)端口,所述视频数据通过所述udp端口采用实时传输协议(real-timetransportprotocol,rtp)将所述视频数据发送至所述服务器,所述服务器接收所述视频数据。所述rtp中包括序列号和时间戳等参数。
本实施例中,通过所述rtp中的序列号和时间戳等参数方便所述服务器与所述网络摄像机在传输通信中保证数据的可靠性和完整性,且便于日后查找所述视频数据。
本实施例通过与摄像机建立传输通信,采用udp传输视频数据,选择udp的话网络很好的情况下很流畅,即使在网络状况很不理想的情况下会将帧丢弃,而不是一直在效验数据,因此不会卡住,保证了视频的流畅性。
进一步地,请参阅图6,基于本发明基于linux多核环境的视频采集装置第二实施例,在本发明基于linux多核环境的视频采集装置第三实施例中,上述基于linux多核环境的视频采集装置还包括:
探测模块101,用于发送相应的探测信息至范围内的摄像机;
本实施例中,服务器在下发相应的采集视频数据至相应的服务器之前,先发送相应的探测信息至范围内的摄像机。可以理解的是,当服务器在网络中发送探测信息时,只要是网络摄像机能收到所述探测信息,则都会针对所述探测信息发回反馈信息,其中反馈信息包括了自身的ip地址等信息。
配对模块102,用于当接收到摄像机的反馈信息时,则确认与该摄像机配对成功;
第二发送模块103,用于发送采集视频数据的指令至配对成功的摄像机。
进一步地,如果摄像机收到探测信息后发送反馈信息至相应的服务器,则表示该摄像机是能与该服务器进行配对的摄像机,此时,服务器可以根据需要进一步发送采集视频数据的信息至该摄像机。
本实施例,通过与所述摄像机进行配对确认,从而与能与服务器进行配对的摄像机进行通讯连接,进一步采集该摄像机的视频数据,提高视频采集数据的效率。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。