本发明涉及视频监控中的数据传输方法,尤其是一种混合协议数据统一化输出的视频传输方法。
背景技术:
:随着城市化进程的快速发展以及社会治安体系的不断健全,视频监控在社会中发挥的作用日益重要,交通道路监控和公安治安监控是视频监控的两大用武之地,由于用途不同,同一地区的交通部门与公安部门通常有各自视频监控平台,不同地区之间一般也都有自己各自的监控平台,另外每个地区的监控设备都是分批次逐步更新的,设备型号不同,由于这些历史原因,无论是监控平台还是监控设备都不可能实现一次性统一建设与更新换代。一方面,随着社会协作化的进步,资源需要合理整合与共享,以实现最大利用率。视频资源的整合就是一个重要环节,不同部门和地区之间的资源共享可以大大提高社会的安定与高效;就视频监控平台而言,不同平台和设备分别采用不同的视频传输协议,其中主要包括国标协议(GB/T28181)和私有协议等,要整合这些平台设备资源,必须对这两种协议进行混合处理,使其具有公共的属性。另一方面,私有协议的视频传输中,为了保证一些协商数据(如视频头)的完整性,大多采用TCP方式,而TCP方式虽然能够保证数据完整性,却由于连接过程复杂,不适用于实时性较高的应用场景;而国标协议则是规定了只能用UDP方式传输视频数据,这样就保证了数据传输的实时性和传输效率,适用于大部分的安防监控场景,但是却不能满足对数据完整性要求较高的场景,当前国标标准GB/T28181-2011补充协议(2014年发布)尚未支持TCP方式的视频传输方式,而正在草拟的GB/T28181最新标准已经在为TCP支持征求意见,虽然标准还在草拟阶段,TCP方式的国标传输也没有权威的解决方案,但是由此可以看出,国标协议的UDP/TCP多种传输方式支持已经成为大势所趋。专利公布号[CN104954764A]基于视频资源安全网关的视频监控系统中提出通过协议转码和视频转码的方式将非国标设备(私有协议)无缝接入到SIP(国标)服务器,实现不同协议的混合接入,该方法是本领域人员较容易想到的方法,但是在实际环境中却很难实现,一方面对非国标设备的视频转码是一项消耗资源的方法,往往需要另外添加硬件转码服务器,对成本影响较大;另一方面,由于监控设备的参差不同,有相当部分的早期非国标设备不支持国标转码,即使是支持国标转码的新设备,不同厂家的转码规则也都不同,对于接入不同厂家设备的大规模视频监控平台并不适用。技术实现要素:为了克服已有视频监控数据传输方式实现不同协议混合接入时实现困难、成本较高、适用性较差的不足,本发明提供一种实现简便、成本较低、适用性良好的混合协议数据统一化输出的视频传输方法。本发明解决其技术问题所采用的技术方案是:一种混合协议数据统一化输出的视频传输方法,基本实施环境包括下级数据接入平台或设备、数据转发服务器和客户端;所述下级数据接入平台或设备接收下属设备采集的视频流并发送给数据转发服务器,视频数据接入方式包括私有数据以TCP协议方式接入和国标数据以UDP协议方式接入;所述数据转发服务器接收下级数据接入平台或设备发送的视频数据,私有数据以TCP协议方式接入,国标数据以UDP协议方式接入;并根据客户端发送的视频传输方式请求,对视频数据进行协议混合处理,对数据的RTP协议头进行统一的重新定义和拆分处理,在当前私有数据通过TCP协议传输和国标数据通过UDP协议传输两种方式的基础上,增加私有数据通过UDP协议传输和国标数据通过TCP协议传输两种视频数据传输方式,进行数据转发;所述客户端根据当前应用场景及网络负载情况,选择视频传输方式并发送请求至数据转发服务器,获取视频数据,进行解码播放操作。作为优选,当所述数据转发服务器接收到TCP传输请求后,对于接收到的国标数据,保留第一个数据包的RTP协议头用于接收端解析,后续包则去除RTP协议头,组成连续的视频流数据,通过TCP协议发送给客户端;对于接收到的私有数据,加入数据缓存机制,将视频数据缓存在队列中,并取出固定长度的数据,添加RTP协议头,用于视频流的描述,封装为国标格式后以固定包长进行发送。当所述数据转发服务器接收到UDP传输请求后,对于接收到的国标数据,则直接转发给客户端;对于接收到的私有数据,将视频数据缓存在队列中,并取出固定长度的数据,添加RTP协议头,用于视频流的描述,封装为国标格式后以固定包长进行发送。作为优选,所述私有数据添加的RTP协议头为12个字节,其中定义PT字段中100-127的值为不同的私有厂家。作为优选,私有数据传输时,对于含视频头的厂家数据,第一个包取出视频头,添加RTP头然后填充无效数据使总长度达到固定包长,然后发送,其他厂商数据则直接取固定长度数据添加RTP协议头后发送,后续包则都以固定包长发送。作为优选,私有数据通过UDP协议传输时,在后续数据包的起始位置添加2个字节的序列号字段,序列号编码顺序为0-65536,依次递增,用于接收端对数据进行丢包处理及乱序重组。作为优选,所述客户端发送TCP传输请求后,首先接收一个固定长度的数据包,取出RTP协议头,并解析出PT的值,如果PT=96,则代表视频流为国标标准流,剩余的视频流数据直接发送给国标通用播放器模块中,后续数据包也都直接发送到播放器模块进行解码播放操作。如果PT≠96,则为私有数据流,找出对应厂家,然后将剩余视频流数据分别送入对应厂家的播放器模块,如果该厂家是含有视频头的,则在第一个包的数据中取出RTP协议头后视频头长度的数据送入播放器的解析接口,并将后续数据送入解码接口进行解码播放操作。所述客户端发送UDP传输请求后,首先接收到一个完整数据包,取出RTP协议头,并解析出PT的值,如果PT=96,则代表视频流为国标标准流,按照当前国标标准对每一个数据包都进行RTP协议头的解析,并把剩余视频流数据送入通用国标播放器模块进行解码播放操作。如果PT≠96,则为私有数据流,找出对应厂家,然后将剩余视频流数据分别送入对应厂家的播放器模块,如果该厂家是含有视频头的,则在第一个包的数据中取出RTP协议头后视频头长度的数据送入播放器的解析接口,后续数据包则先解析出前2个字节的序列号,用于对数据包的丢包的处理与乱序重排,剩余其余数据则送入解码接口进行解码播放操作。本发明的技术构思为:在保证不同协议纯视频数据和对原协议支持不做改动的前提下,对数据的特定位置进行统一的重新定义和拆分等处理,并制定新的发送规则,使接收端在需要的时候按照约定规则对数据进行重组和解析,即可以任何自己希望的传输方式得到希望的视频数据。适用于将通过私有协议对接得到的私有视频数据和通过国标对接得到的标准视频数据,经过数据转发服务器封装处理后,以统一化的方式与外界进行数据对接,通过对当前协议的修改完善,屏蔽下级协议类型,数据转发服务器与接收方(客户端或对接服务器)之间达成共识,接收方只需根据当前网络状况配置TCP/UDP传输方式,即可得到需要的点位视频数据,而不必提前知晓所需点位的设备厂家、协议类型等信息,最终达到使混合协议接入的数据统一化输出的目的;方案同时提出了国标TCP传输较为实用的解决方案,为正在修订的国标新标准中该意见的征集提供一定的参考。本发明的有益效果主要表现在:1、对TCP传输的私有流数据参考国标方式进行统一包装与分割,同时利用国标规定的RTP协议头中现有的PT字段对私有流所属厂家进行映射,将国标协议与私有协议区分开,这样做的好处在于既能使私有流数据与国标数据保持格式一致,又无需在当前数据基础上另外包装私有协议信息,对于数据接收者,从只对国标数据进行RTP解析改为对所有数据进行解析,然后根据规则进一步的分类处理即可,最大程度的简化附加规则,使TCP方式的私有流可以以类似国标的方式进行UDP的传输;2、对于当前国标唯一支持的UDP方式传输的标准视频流,则根据TCP数据连续性的特点进行适当的改进,保留第一个数据包的RTP头用于协议和数据解析,取出后续包中的RTP头,组成连续的视频数据,并以固定包长发送以适应TCP传输特性,从而与简单包装后的私有协议格式保持一致,实现国标数据UDP到TCP的快速转换,同时又不影响当前国标标准的UDP方式;3、本方案利用当前私有流和国标流传输方式中现有的特性,通过整合协商,将数据格式趋于统一,使客户端在无需知晓底层连接方式的情况下,根据当前应用场景及网络负载状况,任意指定视频传输方式以满足需求,此方案不仅适用于客户端与转发服务器的对接,更可用于转发服务器与外部平台的数据对接,进而扩展至多级平台之间的对接,不仅有效地实现了协议间的灵活搭配,也可以为当前正在草拟的新GB/T28181标准提供一种现实可行的参考方案。4、本方案是采用数据规则统一化的方式实现国标数据和私有数据的混合统一化输出,避免了采用视频转码等方式造成的成本增加,是一种较为经济实用的方法。5、本方案的所有数据协议处理方式都是在保持原始数据协议与传输方式基本不变的前提下进行的,如果客户端不需要扩展至协议混合传输或者外部接收端不了解本方案的数据协议规则,则只需要按照原始的协议方式进行请求即可,如接收端以现在国标规定的UDP方式对接国标数据时,不需要做任何的协商,转发服务器对于UDP方式的国标数据采用直接转发的方式,接收端只需按照正常流程进行对接即可。附图说明图1是本发明方案的系统架构图,其中(a)为基本架构图,(b)为方案预期效果架构图。图2是本发明方案的数据发送图。图3是本发明方案的数据接收图。图4是字段格式的示意图。图5是添加过RTP后的私有数据起始包的示意图。图6是起始包包装前的示意图。图7是起始包包装后的示意图。具体实施方式下面结合附图对本发明作进一步描述。参照图1~图7,一种混合协议数据统一化输出的视频传输方法,实施环境包括前端采集设备、下级视频服务器、数据转发服务器、和客户端(或对接服务器),其中下级视频服务器将从前端设备采集到的视频数据以国标协议和私有协议两种方式接入到数据转发服务器,数据转发服务器通过对接收到的数据进行协议混合处理,最终以可自由配置的方式提供给客户端或上级对接服务器,使其最终获取到需要的视频流数据,即实现从图1-(a)到图1-(b)的转变;如图2所示,数据转发服务器接收到下级服务器的视频数据,其中私有数据以TCP方式接入,国标数据以UDP方式接入,这是当前大部分厂商主要支持的接入方式,尤其是国标方式,在新的GB/T28181标准出台之前,只能支持UDP+RTP的方式接入;转发服务器再根据客户端的指定选择传输类型,当客户端选择TCP传输时,需要对两种数据分别进行处理:对于国标数据,为了将传输效率优先且数据包独立传输的UDP特性与数据完整性优先且数据包连续的TCP特性相兼容,实施例中将第一个数据包的RTP保留,用于接收者进行视频的解析,其中的PT(payloadtype)字段代表荷载类型,在国标协议中已经默认为96,接收者在接收到视频流后,可以据此判断此视频流为国标数据,并对其进行处理,对于后续的国标数据包则去除前12个字节的RTP头后通过TCP发送给客户端,客户端接收到的为多个包连接的数据,或者是被网络拆分后的包数据,由于此时已去除RTP头,所以为纯视频数据,不受TCP传输时网络拆分的影响,接收者可以依次送入解码模块;对于私有数据,由于本身就是通过TCP接入的,所以不用考虑后续数据拆分与重新组包的影响,但是为了使客户端可以区分数据的性质,实施例中将国标标准加入12字节的RTP协议头,使其在格式上与国标数据保持一致,并根据RFC3550标准中的RTP描述进行时间戳、标志位、序列号等字段填充,其描述如图4所示。由于PT字段中96-127之间的值在标准中未被定义,实施例中将其填充为私有厂家的类型,同时与国标中默认的值96相对应,其定义如表1:厂家类型国标厂家A厂家B厂家C…PT96100101102…表1添加过RTP后的私有数据起始包如图5所示。其中框选区域内的起始12个字节既为添加的RTP数据。为了保证数据长度的一致,无论是TCP还是UDP传输,私有数据都采用固定数据大小进行发送(国标数据大小本身已有限制,无需另外拆分),由于UDP传输的MTU限制,实施例中按照公式(1)设置固定包长:PACK_SIZE=MTU(1500)–IP头(20)-UDP头(8)=1472公式(1)由于厂家私有流通常有包含视频头和不含视频头两种,视频头的作用是用于厂商自己解码模块的视频信息解析,客户端需要在解码视频流数据前先传入视频头,因此对于含有视频头的私有数据和不含视频头的私有数据起始包的组成如表2:表2以含有视频头的海康私有视频数据为例,实施例中对其起始包进行了再包装,包装前由40字节的海康视频头和后续视频数据组成,包装后由RTP头(12)+视频头(40)+无效填充数据(1420)组成。包装前如图6所示,包装后如图7所示。为了便于对私有数据进行处理,需要对数据进行缓存,为了最小程度的影响数据传输的实时性,实施例中设置PACK_SIZE*5=7360大小的缓存区,每次缓存5个固定包长大小的数据;如图2所示,当客户端选择UDP传输时,同样需要对两种数据分别进行处理:对于接收到的国标数据,由于本身就是UDP方式,所以无需处理直接转发给客户端,客户端根据当前国标协议方式进行接收与解析;对于接收到的私有数据则采用与步骤2中私有数据的TCP传输基本相同的方式进行处理,即封装为国标格式后以固定包长进行发送,保证在不同协议和不同传输方式之间能够保持数据格式的一致性,唯一不同的是,由于UDP传输的不可靠性,在传输过程中会发生丢包和乱序现象,因此需要对每一个数据包的序列号进行编码,用于接收端对数据进行丢包处理及乱序重组,对于国标数据每个包前的RTP头中已经带有序列信息,对于私有流,起始数据包已添加过RTP信息,我们只需要在后续数据包的起始位置添加2个字节的序列号字段,即序列号编码顺序为0-65536,依次递增,包组成如下;如图3所示,对于接收客户端,当发送了TCP传输请求后,建立TCP连接,首先持续接收至固定PACK_SIZE长度的数据,并解析前出12个字节的RTP头,存放在pBuffer[12]数组中,利用公式(2)计算出PT值:PT=pBuffer[1]&0x7F公式(2)如果PT=96,则代表视频流为国标标准流,将剩余的视频流数据发送给国标通用播放器模块中,后续接收的数据包则直接发送到播放器模块进行解码播放等操作;如果PT不等于96的视频流,根据步骤2中的表1映射找出对应厂家,然后将剩余视频流数据送入对应厂家的播放器模块,如果该厂家是含有视频头的,则只取RTP头后视频头长度的数据(每个厂家的视频头长度固定的)送入播放器的解析接口,后续接收的数据包则直接发送到该厂家对应的播放器模块进行解码播放等操作;如图3所示,如果客户端发送了UDP传输请求,首先接收第一个数据包,并解析出RTP协议头,按照公式2得到PT类型值,如果是国标,则按照当前国标标准将剩余视频数据送入国标通用播放器模块,并对于后续每个数据包做同样的处理;如果为私有数据类型,起始包的处理同对TCP的处理相同,后续数据包则先解析出前2个字节的序列号,用于对数据包的丢包的处理与乱序重排,剩余其余数据则送入解码接口进行解码播放等操作。本发明的上述实施例中数据转发服务器将下级平台(或设备)以不同协议接入的视频数据,结合国标与私有流各自的数据格式特性,TCP与UDP各自不同的数据传输特性,对数据和协议进行统一化处理,最终实现不同视频数据和传输协议之间的灵活转换,使客户端用户可以根据当前应用场景中的设备和网络现状,对所有视频点位的数据传输方式进行自由配置,而不必关心该点位的底层接入信息,本发明的思路可以为GB/T28181最新标准的补充扩展提供一定的参考价值。以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。当前第1页1 2 3