监控设备的视频流数据分发方法及装置制造方法
【专利摘要】本发明公开了监控设备的视频流数据分发方法,包括步骤:S1、检测是否有来自客户端的包含客户端地址的视频流播放请求;S2、当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则执行步骤S4,若否,则执行步骤S3;S3、创建发送线程,通过发送线程生成视频流数据包,然后执行步骤S4;S4、把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后执行步骤S5;S5、循环遍历视频流发送地址列表,通过发送线程向该列表中的地址发送视频流数据包。本发明还提供监控设备的视频流数据分发装置。其有益效果是:实现视频流一次数据处理多地址发送,降低了处理视频流数据对硬件资源的占用。
【专利说明】监控设备的视频流数据分发方法及装置
【技术领域】
[0001]本发明涉及安防监控领域,尤其涉及一种监控设备的视频流数据分发方法及装置。
【背景技术】
[0002]随着安防监控产品的网络化、高清化和智能化,监控设备负载无疑会愈来愈大,这主要体现在实时视频流的消耗。当设备处于高负载的工作状态时,经常会遇到下列情况:设备反应慢,网页参数不能正常显示和设置;实时视频卡顿,花屏,丢帧或请求不成功;智能分析不能正常进行。然而,由于监控设备功能不断复杂化的发展,仅靠单纯地提升硬件性能来克服上述缺陷来以满足客户需求显然是不现实的。
[0003]考虑到视频流的资源消耗大,故通过减少视频流的资源消耗对系统性能提升无疑更加直接和高效。
[0004]流媒体协议作为流传输协议,广泛应用于各种监控场所。流媒体协议主要包含三类协议,即 RTSP 协议(Real-Time Steaming Potocoal), RTP 协议(Real-Time TransportPotocoal)和 RTCP协议(Real-Time Transport Control Potocoal)。RTSP协议用于信令交互,控制视频流的请求与断开,支持TCP IUDP I Http协议传输,RTP协议用于数据传输,RTCP协议用于流量控制。
[0005]由于视频流的数据量大和网络链路的MTU的限制,视频帧在发送之前须拆分来满足MTU的要求,然后经RTP协议承载发送至目标地址。当多路连接(RTSP overTCP IUDP I Http)请求同一视频流时,现有的处理方法为:为每路连接分别创建一条发送线程,线程函数中分别进行数据处理和拆分,然后打包为RTP协议包发送至目标地址。由于一路视频连接线程处理(数据处理,拆分及RTP协议封包)资源消耗大,而多路连接又相互独立,导致资源消耗随对同一视频流请求量的增加而呈线性增长,使系统性能急剧下降。
【发明内容】
[0006]本发明主要解决的技术问题是提供一种监控设备的视频流数据分发方法及装置,适用于数据量大,同时连接的路数较多的前端监控设备,可在现有的硬件条件下流畅地实现多个设备对同一视频流的请求。
[0007]本发明采用的一个技术方案是:提供一种监控设备的视频流数据分发方法,包括步骤:
[0008]S1、检测是否有来自客户端的包含客户端地址的视频流播放请求;
[0009]S2、当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则执行步骤S4,若否,则执行步骤S3 ;
[0010]S3、创建发送线程,通过发送线程生成视频流数据包,然后执行步骤S4 ;
[0011]S4、把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后执行步骤S5 ;[0012]S5、循环遍历视频流发送地址列表,通过发送线程向该列表中的地址发送视频流数据包。
[0013]本发明采用的另一个技术方案是:提供一种监控设备的视频流数据分发装置,包括:
[0014]检测模块,用于检测是否有来自客户端的包含客户端地址的视频流播放请求;
[0015]判断模块,用于当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则通知地址添加模块执行操作,若否,则通知线程创建模块执行操作;
[0016]线程创建模块,用于创建发送线程,通过发送线程生成视频流数据包,然后通知地址添加模块执行操作;
[0017]地址添加模块,用于把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后通知视频流发送模块执行操作;
[0018]视频流发送模块,用于循环遍历视频流发送地址列表并通过发送线程向该列表中的地址发送视频流数据包。
[0019]本发明的有益效果是:本发明通过改变视频流的连接处理流程,把共性的逻辑处理提取出来,即每路视频流对应一个发送线程负责视频流数据的处理并发送至不同的目标地址,这样每增加一个对已被请求的视频流的连接,只是将已处理过的视频流数据多发送至一个目标地址,资源消耗不会线性增长,视频流数据的处理、拆包在同一个发送线程中复用,从而实现一次数据处理,多连接地址发送的目的,显著降低了视频流数据的处理对硬件资源的占用,有利于降低对硬件的要求。
【专利附图】
【附图说明】
[0020]图1是本发明的监控设备的视频流数据分发装置的一个实施方式的结构框图;
[0021]图2是本发明的监控设备的视频流数据分发方法的一个实施方式的主要执行流程图。
[0022]主要元件符号说明:
[0023]100、分发装置;10、检测模块;20、判断模块;30、线程创建模块;40、地址添加模块;50、视频流发送模块。
【具体实施方式】
[0024]为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
[0025]请参阅图1,本实施方式为一种监控设备的视频流数据分发装置100,包括:检测模块10、判断模块20、线程创建模块30、地址添加模块40和视频流发送模块50。
[0026]所述检测模块10用于检测是否有来自客户端的包含客户端地址的视频流播放请求。
[0027]所述判断模块20用于当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则通知地址添加模块40执行操作,若否,则通知线程创建模块30执行操作。[0028]线程创建模块30,用于创建发送线程,通过发送线程生成视频流数据包,然后通知地址添加模块40执行操作。
[0029]地址添加模块40,用于把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后通知视频流发送模块50执行操作。
[0030]所述视频流发送模块50用于循环遍历视频流发送地址列表并通过发送线程向该列表中的地址发送视频流数据包。
[0031]其中,所述检测模块10具体包括:服务创建单元、检测单元、第一线程创建单元、接收单元、协议判断单元和第二线程创建单元。
[0032]所述服务创建单元用于创建以TCP协议承载的RTSP协议连接服务。
[0033]所述检测单元用于检测是否有客户端进行RTSP协议连接请求。
[0034]所述第一线程创建单元用于当检测到客户端的RTSP协议连接请求时,创建第一通信线程执行前端监控设备与客户端的RTSP协议命令交互。
[0035]所述接收单元用于通过第一通信线程接收客户端发送的视频流播放请求和通信参数,所述通信参数包括传输协议类型、RTP和RTCP的端口和标识参数、超时时间参数。其中,传输协议类型包括m)P、TCP或HTTP ;当传输协议为UDP时标识参数标识为RTP,端口参数为RTP的IP地址的端口,当传输协议为TCP或HTTP时标识参数标识为RTCP,端口参数为RTCP的IP地址的端口号;超时时间参数为未收到RTSP的GET_PARAMETER信令或RTCP命令的时间间隔值,在这个时间间隔到达后,RTSP断开连接。
[0036]所述协议判断单元用于判断视频流的传输协议类型,若传输协议类型为UDP协议,则通知第二线程创建单元执行操作,若传输协议类型为TCP协议或HTTP协议,则通知所述判断模块20执行操作。
[0037]所述第二线程创建单元用于创建第二通信线程执行RTCP协议的通信,然后通知所述判断模块20执行操作。
[0038]其中,所述线程创建模块30具体包括:第三线程创建单元、获取单元、拆分单元和封装单元。
[0039]所述第三线程创建单元用于创建发送线程。
[0040]所述获取单元用于通过发送线程获取视频流数据。
[0041]所述拆分单元用于对所获取的视频流数据中的视频帧进行拆分。
[0042]所述封装单元用于将拆分后的视频流数据采用RTP协议封装,生成视频流数据包。
[0043]本分发装置100的工作原理为,当前端的视频采集监控设备收到后端的新客户端的视频流连接请求时,分发装置100会先查看该视频流是否已被建立发送线程并处于视频流数据包发送状态,若是,则复用该发送线程将视频流数据包发送到该新客户端;若未连接,则创建新的发送线程进行数据处理后发送视频流数据包。比起传统设备的处理方式,使用本装置后每增加一路对同一视频流的连接请求,仅增加了 RTSPlRTCP的通信及网络数据发送的资源消耗,不会增加系统重复处理相同视频流带来的负荷,使对视频流的数据处理的效率显著提高。并且,由于本装置对同一视频流的请求只进行一次数据处理,在处理数据时不必对数据缓冲区进行加锁,避免多个发送线程同时处理数据时共享数据缓冲区对数据缓冲区的反复加锁,进一步提高了对视频流数据处理的效率。[0044]以下是采用本装置的前端枪机和传统枪机的视频流发送性能比对:
[0045]传统设备通过RTSP over UDP连接三路8M码流,CPU剩余为0%,后端的客户端在查看视频时会出现花屏和丢帧现象;
[0046]带有本装置的设备通过RTSP over UDP连接三路8M码流,CPU的剩余为24%,后端的客户端在查看视频时码流流畅,无卡顿现象。
[0047]请参阅图2,本实施方式为一种监控设备的视频流数据分发方法,包括步骤:
[0048]S1、检测是否有来自客户端的包含客户端地址的视频流播放请求;
[0049]S2、当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则执行步骤S4,若否,则执行步骤S3 ;
[0050]S3、创建发送线程,通过发送线程生成视频流数据包,然后执行步骤S4 ;
[0051]S4、把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后执行步骤S5 ;
[0052]S5、循环遍历视频流发送地址列表,通过发送线程向该列表中的地址发送视频流数据包。
[0053]其中,所述步骤SI具体包括:
[0054]S11、创建以TCP协议承载的RTSP协议连接服务;
[0055]S12、检测是否有客户端进行RTSP协议连接请求;
[0056]S13、当检测到客户端的RTSP协议连接请求时,创建第一通信线程执行前端监控设备与客户端的RTSP协议命令交互;
[0057]S13、通过第一通信线程接收客户端发送的视频流播放请求和通信参数,所述通信参数包括传输协议类型;
[0058]S14、判断视频流的传输协议类型,若传输协议类型为UDP协议,则执行步骤S15,若传输协议类型为TCP协议或HTTP协议,则执行步骤S2 ;
[0059]S15、创建第二通信线程执行RTCP协议的通信,然后执行步骤S2。
[0060]其中,所述步骤S3具体包括:
[0061]S31、创建发送线程;
[0062]S32、通过发送线程获取视频流数据;
[0063]S33、对所获取的视频流数据中的视频帧进行拆分;
[0064]S34、将拆分后的视频流数据采用RTP协议封装,生成视频流数据包。
[0065]本发明的有益效果是:本发明通过改变视频流的连接处理流程,把共性的逻辑处理提取出来,即每路视频流对应一个发送线程负责视频流数据的处理并发送至不同的目标地址,这样每增加一个对已被请求的视频流的连接,只是将已处理过的视频流数据多发送至一个目标地址,资源消耗不会线性增长,视频流数据的处理、拆包在同一个发送线程中复用,从而实现一次数据处理,多连接地址发送的目的,显著降低了视频流数据的处理对硬件资源的占用,有利于降低对硬件的要求。
[0066]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.监控设备的视频流数据分发方法,其特征在于,包括步骤: 51、检测是否有来自客户端的包含客户端地址的视频流播放请求; 52、当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则执行步骤S4,若否,则执行步骤S3 ; 53、创建发送线程,通过发送线程生成视频流数据包,然后执行步骤S4; 54、把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后执行步骤S5 ; 55、循环遍历视频流发送地址列表,通过发送线程向该列表中的地址发送视频流数据包。
2.根据权利要求1所述的监控设备的视频流数据分发方法,其特征在于,所述步骤SI具体包括: SI 1、创建以TCP协议承载的RTSP协议连接服务; 512、检测是否有客户端进行RTSP协议连接请求; 513、当检测到客户端的RTSP协议连接请求时,创建第一通信线程执行前端监控设备与客户端的RTSP协议命令交互; 513、通过第一通信线程接收客户端发送的视频流播放请求和通信参数,所述通信参数包括传输协议类型; 514、判断视频流的传输协议类型,若传输协议类型为UDP协议,则执行步骤S15,若传输协议类型为TCP协议或HTTP协议,则执行步骤S2 ; 515、创建第二通信线程执行RTCP协议的通信,然后执行步骤S2。
3.根据权利要求2所述的监控设备的视频流数据分发方法,其特征在于,所述通信参数还包括RTP和RTCP的端口和标识参数、超时时间参数。
4.根据权利要求1所述的监控设备的视频流数据分发方法,其特征在于,所述步骤S3具体包括: 531、创建发送线程; 532、通过发送线程获取视频流数据; 533、对所获取的视频流数据中的视频帧进行拆分; 534、将拆分后的视频流数据采用RTP协议封装,生成视频流数据包。
5.监控设备的视频流数据分发装置,其特征在于,包括: 检测模块,用于检测是否有来自客户端的包含客户端地址的视频流播放请求; 判断模块,用于当检测到视频流播放请求时,判断所请求的视频流是否已被请求过并且已创建发送线程,若是,则通知地址添加模块执行操作,若否,则通知线程创建模块执行操作; 线程创建模块,用于创建发送线程,通过发送线程生成视频流数据包,然后通知地址添加模块执行操作; 地址添加模块,用于把视频流播放请求中的客户端地址添加至视频流发送地址列表中,然后通知视频流发送模块执行操作; 视频流发送模块,用于循环遍历视频流发送地址列表并通过发送线程向该列表中的地址发送视频流数据包。
6.根据权利要求5所述的监控设备的视频流数据分发装置,其特征在于,所述检测模块具体包括: 服务创建单元,用于创建以TCP协议承载的RTSP协议连接服务; 检测单元,用于检测是否有客户端进行RTSP协议连接请求; 第一线程创建单元,用于当检测到客户端的RTSP协议连接请求时,创建第一通信线程执行前端监控设备与客户端的RTSP协议命令交互; 接收单元,用于通过第一通信线程接收客户端发送的视频流播放请求和通信参数,所述通信参数包括传输协议类型; 协议判断单元,用于判断视频流的传输协议类型,若传输协议类型为UDP协议,则通知第二线程创建单元执行操作,若传输协议类型为TCP协议或HTTP协议,则通知所述判断模块执行操作; 第二线程创建单元,用于创建第二通信线程执行RTCP协议的通信,然后通知所述判断模块执行操作。
7.根据权利要求6所述的监控设备的视频流数据分发装置,其特征在于,所述通信参数还包括RTP参数、RTCP端口 /标识参数和超时时间参数。
8.根据权利要求5所述的监控设备的视频流数据分发装置,其特征在于,所述线程创建模块具体包括: 第三线程创建单元,用于创建发送线程; 获取单元,用于通过发送线程获取视频流数据; 拆分单元,用于对所获取的视频流数据中的视频帧进行拆分; 封装单元,用于将拆分后的视频流数据采用RTP协议封装,生成视频流数据包。
【文档编号】H04N7/18GK103731641SQ201410016460
【公开日】2014年4月16日 申请日期:2014年1月14日 优先权日:2014年1月14日
【发明者】彭大永 申请人:深圳英飞拓科技股份有限公司