一种网络视频监控数据流存储系统转让专利

申请号 : CN201110287791.7

文献号 : CN102413304B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周文举武树斌

申请人 : 武汉烽火网络有限责任公司

摘要 :

本发明公开了一种网络视频监控数据流存储系统,其包括有客户端单元、服务端单元及物理磁盘单元,所述客户端单元的客户端程序与所述服务端单元的服务端程序通过标准的API接口进行媒体数据流传输,并且客户端单元和服务端单元都嵌入到磁盘阵列柜内部运行;所述客户端单元负责接收数据并处理后发送给所述服务端单元,以及向所述服务端单元请求数据并解析后对外发送,所述服务端单元负责将所述客户端单元传来的数据按优先的策略写入磁盘阵列柜的所述物理磁盘单元内,以及从所述物理磁盘单元内查询到需要的数据后发送给所述客户端单元。借由本发明的存储系统,能有效地减少数据传输过程中的单点故障,使得数据传输方式更简捷、更容易控制和维护。

权利要求 :

1.一种网络视频监控数据流存储系统,其特征在于,其包括有客户端单元、服务端单元及物理磁盘单元,所述客户端单元的客户端程序与所述服务端单元的服务端程序通过标准的API接口进行媒体数据流传输,并且所述客户端单元和所述服务端单元都嵌入到磁盘阵列柜内部运行;所述客户端单元负责接收数据并处理后发送给所述服务端单元,以及向所述服务端单元请求数据并解析后对外发送,所述服务端单元负责将所述客户端单元传来的数据按优先的策略写入磁盘阵列柜的所述物理磁盘单元内,以及从所述物理磁盘单元内查询到需要的数据后发送给所述客户端单元;

所述客户端单元前连接有视频前端设备及用户操作界面,所述视频前端设备由前端摄像头和编码器构成,用以采集媒体数据,并通过所述网络视频监控数据流存储系统将前端视频数据通过录像程序实时保存到网络存储设备中,并对保存的媒体数据提取通过回放程序回放给所述用户操作界面;

所述客户端单元实现接收与发送两个方向的功能,所述客户端单元由数据存储单元和数据提取单元组成,所述数据存储单元为录像单元,负责接收来自所述视频前端设备的数据,将数据进行相应格式的转换后发送到所述服务端单元;所述数据提取单元为回放单元,负责从所述服务端单元请求所需的时间段的数据,将数据按保存的格式解析后发送给所述用户操作界面;

所述数据存储单元包括有依次相连的保存数据控制信令模块、媒体数据接收模块、媒体数据处理模块、媒体数据发送模块及媒体数据存储接口,其中,所述保存数据控制信令模块接收来自所述用户操作界面所发出的存储控制信令,以及向其返回数据保存的结果;

所述媒体数据接收模块在数据处理任务建立成功后,接收对应监控点的视频数据;

所述媒体数据处理模块无限循环地去获取收到的每路视频数据包,并对每个数据包按一定的格式进行转换;

所述媒体数据发送模块负责将处理完的数据包,通过调用所述媒体数据存储接口将数据发送给所述磁盘阵列柜内的服务端程序,让所述服务端单元将数据写入所述物理磁盘单元。

2.如权利要求1所述的网络视频监控数据流存储系统,其特征在于,所述录像程序、回放程序和读/写磁盘阵列柜磁盘的所述服务端程序嵌入到所述磁盘阵列柜内运行。

3.如权利要求1所述的网络视频监控数据流存储系统,其特征在于,所述媒体数据存储接口包括:客户端注册/注销接口、开始/停止录像接口、开始发送数据接口、查询录像接口及错误提示接口。

4.如权利要求1所述的网络视频监控数据流存储系统,其特征在于,所述数据提取单元包括有提取数据控制信令模块、媒体数据提取接口、媒体数据接收模块、媒体数据处理模块及媒体数据发送模块,其中,所述提取数据控制信令模块处理所述客户端单元与所述用户操作界面之间的RTSP交互信令;

所述媒体数据提取接口是所述客户端程序向所述服务端程序获取以前保存的媒体数据的API接口,该接口主要包括:开始取数据流接口、停止取数据流接口及获取摄像头私有文件头信息接口;

所述媒体数据接收模块将接收到的每个数据包缓存到的数据链表里,以交给所述媒体数据处理模块来处理链表里的数据;

所述媒体数据处理模块不断地从所述数据链表里提取出收到的每路数据包,并根据数据包保存的格式对每个包进行解析,获取这个数据包和前一个数据包的时间间隔、数据包的类型、包的长度,数据包的内容;

所述媒体数据发送模块将解析完了的数据包,在需要发送的时间点发送给用户请求回放的所述用户操作界面。

5.如权利要求1或4所述的网络视频监控数据流存储系统,其特征在于,所述数据包为RTP/RTCP媒体数据包。

说明书 :

一种网络视频监控数据流存储系统

技术领域

[0001] 本发明有关一种网络视频监控数据流存储系统,特别是指一种低成本高可靠性的基于IP-SAN磁盘阵列柜的网络视频监控数据流存储系统。

背景技术

[0002] 目前SAN(Storage Area Network,存储区域网络)存储分为FC-SAN(Fiber Channel-SAN,基于光纤通道协议)和IP-SAN/NAS(Internet Protocol- SAN/NAS,基于以太网协议),FC-SAN采用光纤和HBA(Host Bus Adapter,主机总线适配器)卡来传输数据,虽然性能很高,但因其价格高昂,所以应用得不够广泛;而IP-SAN/NAS采用IP网络来传输数据,因其价格低廉并且性能较高而得到了广泛的应用,在网络视频监控行业中的海量视频流数据存储一般都采用IP-SAN存储。IP-SAN/NAS在应用上分为NAS(Network Attached Storage,网络存储设备)和iSCSI(Internet Small Computer System Interface,因特网小型计算机系统接口)两种方式,NAS技术采用共享网络磁盘技术,不同用户可以共享不同类型的数据,其在使用和存储扩展方面都很方便,但它的并发存储性能较差,并且不能支持本地文件系统(即:存储的磁盘不能作为本地磁盘使用);iSCSI是通过IP网络将SCSI数据转换成网络封包的一种传输协议,该协议被用于TCP/IP网络上的服务器(initiator)和存储设备(Target),使得SCSI命令能在他们之间进行传送,存储设备以数据块的方式写入磁盘,拥有比NAS更高的并发存储能力。采用iSCSI技术的存储设备与主机之间有三种连接方式:initiator软件+以太网卡、initiator软件+TOE HBA(TCP/IP Offload Engine HBA,TCP/IP卸载引擎主机总线适配器)卡和iSCSI HBA卡,就性能而言,Initiator软件最差、TOE HBA居中、iSCSI HBA卡最佳。目前initiator软件几乎都免费使用。第一种使用主机自带以太网卡,如果采用高性能的服务器,基本不会存在性能上的不足;后两者虽然性能更佳,但都会额外增加硬件设备的成本。传统的网络视频监控数据流存储系统结构如图1所示,客户端服务器1利用HBA卡,客户端服务器2利用自带的以太网卡通过交换机连接用于存储数据的磁盘阵列柜。
[0003] 目前,在以IP-SAN方式存储的视频监控行业应用中,一般都以iSCSI方式的应用为主,并且大都采用Initiator软件+服务器自带的以太网卡来实现,因为这种应用方式既有较高的性能又能节省成本。采用iSCSI方式应用的磁盘阵列柜基本上都是采用文件的方式来读/写数据,即:位于客户服务器一侧的应用程序通过调用操作系统内的文件操作接口将数据保存到文件中或从文件中读取数据,文件存放到已挂载到操作系统的某个挂载点下的磁盘阵列柜的逻辑卷内,安装在操作系统内的iSCSI-initiator软件负责将数据块写入到磁盘阵列柜的磁盘逻辑卷中或从逻辑卷中获取数据块,这种处理流程使得服务器上的应用程序与网络存储设备之间存在一个操作系统内的文件系统层,这个层面将数据以文件的方式展现给应用程序,并通过iSCSI-initiator软件和网卡往磁盘阵列柜里读/写数据。
[0004] 使用文件系统层来封装数据存在两个问题:
[0005] (1)要使用iSCSI方式访问网络存储设备,存/取数据的应用程序必须独立运行在iSCSI磁盘逻辑卷之外的操作系统上,这样就需要将应用程序放置在一台独立的应用服务器上。应用服务器和磁盘阵列柜分开,将使得网络存储系统的建设成本增大;
[0006] (2)目前,在大规模的视频监控行业中,应用程序一般都是运行在装有Linux或Unix操作系统的服务器上,如果应用服务器在向磁盘阵列柜写入数据的时候发生了网络长时间中断的情况,将会造成文件写入错误,iSCSI-initiator软件在超时时间到后又不能恢复连接,此时,文件系统就会出现错误,操作系统会将本服务器上挂载的当前写入数据失败的网络磁盘的属性更改成只读属性,应用程序将不能再向该网络磁盘里写入数据,即使后面网络恢复了连接,也仍将无法继续写入数据,从而造成数据一直无法保存,除非人为地手动修复好该磁盘的文件系统,才能继续往该磁盘写入数据。如果这种故障的发生率较高,整个应用系统的维护工作量将会很大。

发明内容

[0007] 有鉴于此,本发明的主要目的在于提供一种低成本高可靠性的基于IP-SAN磁盘阵列柜的网络视频监控数据流存储系统。
[0008] 为达到上述目的,本发明提供一种网络视频监控数据流存储系统,其包括有客户端单元、服务端单元及物理磁盘单元,所述客户端单元的客户端程序与所述服务端单元的服务端程序通过标准的API接口进行媒体数据流传输,并且所述客户端单元和所述服务端单元都嵌入到磁盘阵列柜内部运行;所述客户端单元负责接收数据并处理后发送给所述服务端单元,以及向所述服务端单元请求数据并解析后对外发送,所述服务端单元负责将所述客户端单元传来的数据按优先的策略写入磁盘阵列柜的所述物理磁盘单元内,以及从所述物理磁盘单元内查询到需要的数据后发送给所述客户端单元。
[0009] 所述客户端单元前连接有视频前端设备及用户操作界面,所述视频前端设备由前端摄像头和编码器构成,用以采集媒体数据,并通过所述网络视频监控数据流存储系统将前端视频数据通过录像程序实时保存到网络存储设备中,并对保存的媒体数据提取通过回放程序回放给所述用户操作界面。
[0010] 所述录像程序、回放程序和读/写磁盘阵列柜磁盘的所述服务端程序嵌入到所述磁盘阵列柜内运行。
[0011] 所述客户端单元实现接收与发送两个方向的功能,所述客户端单元由数据存储单元和数据提取单元组成,所述数据存储单元为录像单元,负责接收来自所述视频前端设备的数据,将数据进行相应格式的转换后发送到所述服务端单元;所述数据提取单元为回放单元,负责从所述服务端单元请求所需的时间段的数据,将数据按保存的格式解析后发送给所述用户操作界面。
[0012] 所述数据存储单元包括有依次相连的保存数据控制信令模块、媒体数据接收模块、媒体数据处理模块、媒体数据发送模块及媒体数据存储接口,其中,
[0013] 所述保存数据控制信令模块接收来自所述用户操作界面所发出的存储控制信令,以及向其返回数据保存的结果;
[0014] 所述媒体数据接收模块在数据处理任务建立成功后,接收对应监控点的视频数据;
[0015] 所述媒体数据处理模块无限循环地去获取收到的每路视频数据包,并对每个数据包按一定的格式进行转换;
[0016] 所述媒体数据发送模块负责将处理完的数据包,通过调用所述媒体数据存储接口将数据发送给所述磁盘阵列柜内的服务端程序,让所述服务端单元将数据写入所述物理磁盘单元。
[0017] 所述媒体数据存储接口包括:客户端注册/注销接口、开始/停止录像接口、开始发送数据接口、查询录像接口及错误提示接口。
[0018] 所述数据提取单元包括有提取数据控制信令模块、媒体数据提取接口、媒体数据接收模块、媒体数据处理模块及媒体数据发送模块,其中,
[0019] 所述提取数据控制信令模块处理所述客户端单元与所述用户操作界面之间的RTSP(Real Time Streaming Protocol,实时流传输协议)交互信令;
[0020] 所述媒体数据提取接口是所述客户端程序向所述服务端程序获取以前保存的媒体数据的API接口,该接口主要包括:开始取数据流接口、停止取数据流接口及获取摄像头私有文件头信息接口;
[0021] 所述媒体数据接收模块将接收到的每个数据包缓存到的数据链表里,以交给所述媒体数据处理模块来处理链表里的数据;
[0022] 所述媒体数据处理模块不断地从所述数据链表里提取出收到的每路数据包,并根据数据包保存的格式对每个包进行解析,获取这个数据包和前一个数据包的时间间隔、数据包的类型、包的长度和数据包的内容;
[0023] 所述媒体数据发送模块将解析完了的数据包,在需要发送的时间点发送给用户请求回放的所述用户操作界面。
[0024] 所述数据包为RTP/RTCP(Realtime Transport Protocol,实时传输协议/ Realtime Transport Control Protocol,实时传输控制协议)媒体数据包。
[0025] 借由本发明的网络视频监控数据流存储系统,能有效地减少数据传输过程中的单点故障,使得数据传输方式更简捷、更容易控制和维护,且能够避免目前以iSCSI方式连接的磁盘阵列柜应用系统在存储数据的过程中因网络中断所造成的磁盘阵列柜的虚拟磁盘只读的故障;本发明中的客户端单元和服务端单元都嵌入到磁盘阵列柜内运行,由一台磁盘阵列柜完成数据的传输、保存、获取、查询、删除等所有功能,存储系统功能一体化,有效降低了系统成本。

附图说明

[0026] 图1为传统的网络视频监控数据流系统结构图;
[0027] 图2为本发明网络视频监控数据流存储系统图;
[0028] 图3为本发明中的数据存储单元的结构原理图;
[0029] 图4为将媒体数据保存到磁盘阵列柜的处理流程图;
[0030] 图5为本发明中的数据提取单元的结构原理图;
[0031] 图6为提取数据的回放程序内部处理流程图。

具体实施方式

[0032] 为便于对本发明的结构及方法有进一步的了解,现结合附图并举较佳实施例详细说明如下。
[0033] 如图2所示,本发明所采用的网络视频监控数据流存储系统,包括有客户端单元、服务端单元及物理磁盘单元,客户端单元的客户端程序与服务端单元的服务端程序通过标准的API(Application Program Interface,应用程序接口)进行数据传输,并且客户端单元和服务端单元都嵌入到磁盘阵列柜内部运行。
[0034] 客户端单元负责接收数据并处理后发送给服务端单元,以及向服务端单元请求数据并解析后对外发送。服务端单元负责将客户端单元传来的数据按优先的策略写入磁盘阵列柜的物理磁盘单元内,以及从物理磁盘单元内查询到需要的数据后发送给客户端单元。
[0035] 本发明网络视频监控数据流存储系统的客户端单元前连接有视频前端设备及用户操作界面,视频前端设备由前端摄像头和编码器构成,用以采集媒体数据,并通过网络视频监控数据流存储系统将前端视频数据通过录像程序实时保存到网络存储设备中(即录像),并对保存的媒体数据提取通过回放程序回放给用户操作界面的用户。本发明中的录像程序、回放程序和读/写磁盘阵列柜磁盘的服务端程序嵌入到磁盘阵列柜内运行。
[0036] 本发明采用图2所示的C/S结构,客户端和服务端应用程序完成对媒体数据的保存和回放功能。本发明的客户端单元由数据存储单元和数据提取单元组成。数据存储单元(即录像单元)负责接收来自视频前端设备的数据,将数据进行相应格式的转换后发送到服务端单元。数据提取单元(即回放单元)负责从服务端单元请求所需的时间段的数据,将数据按保存的格式解析后发送给远程视频播放软件(即用户操作界面),因此客户端单元实现接收与发送两个方向的功能。
[0037] 服务端单元通过提供给客户端单元的API,也要实现接收和发送两个方向的功能:一是接收来自客户端单元的数据,并将数据写到磁盘阵列柜的物理磁盘单元中;二是根据客户端单元对具体时间段的数据请求,从物理磁盘单元里提取出对应的数据,然后发送给客户端单元。
[0038] 在服务端单元已提供了完备稳定的API后,该存储系统的实现就集中在数据的发送和获取的客户端单元上。现分别对数据的保存和提取过程进行详细的说明。
[0039] 媒体数据的保存
[0040] 本发明中视频前端设备的编码器设备所发出的媒体数据是采用MPEG4或H264标准进行编码后以RTP/RTCP形式进行封装了的数据包,客户端保存数据(即平台录像)的程序需要将这些媒体数据保存到网络上的磁盘阵列柜中,如图3所示,本发明中的数据存储单元包括有依次相连的保存数据控制信令模块、媒体数据接收模块、媒体数据处理模块、媒体数据发送模块及媒体数据存储接口,其中:
[0041] 保存数据控制信令模块接收来自用户操作界面所发出的存储控制信令,以及向其返回数据保存的结果。所有的存储控制信令消息都有统一协商定义的格式,以便于接收消息的模块能够对消息正确地解析、处理。控制媒体数据流存储的信令消息主要包括:录像准备、开始录像、结束录像、查询录像记录、录像故障通知等。
[0042] 媒体数据接收模块在数据处理任务建立成功后,就开始接收对应监控点的视频数据。在收到数据包后,会将数据包缓存到该路视频存储对象的数据链表里,然后通知数据处理部分来处理收到的该路数据包。
[0043] 媒体数据处理模块会无限循环地去获取收到的每路视频数据包(RTP/RTCP数据包),并对每个数据包按一定的格式进行转换。为了能在视频回放时实现精确地快进、快退、快放、慢放、单帧播放等功能,需要对接收到的每个数据包进行分析,判断它是RTP包,还是RTCP包,以及是否是组成I帧的RTP包,为此该媒体数据处理模块对接收到的数据包进行了新的封装,在数据包头或包尾添加了可以识别包类型、到达时间等信息的字段。
[0044] 媒体数据发送模块负责将处理完的RTP/RTCP数据包,通过调用媒体数据存储接口将数据发送给磁盘阵列柜内的服务端程序,让服务端单元将数据写入物理磁盘单元,客户端单元将数据发送成功后就可以释放掉缓存的这个数据包了。
[0045] 客户端单元与运行在磁盘阵列柜里面的服务端单元之间的数据传输是通过自定义的媒体数据存储接口(API接口)来完成的,这些接口包括:客户端注册/注销接口、开始/停止录像接口、开始发送数据接口、查询录像接口及错误提示接口等等。
[0046] (1)客户端注册/注销接口
[0047] 在开始各种任务之前,客户端程序要先调用该接口注册到服务端单元,然后才能与服务端单元之间进行各种消息和数据的传输。在执行完成各种任务后,并且不再需要与服务端单元进行联系后,要向服务端单元发送注销消息,以让服务端释放连接和分配的资源。
[0048] (2)开始/停止录像接口
[0049] 客户端单元在开始录像时,必须先调用开始录像接口,在该接口内传入这一个摄像头的信息参数(包括:该客户端注册时获取到的ID、摄像头ID、录像类型、要存放录像数据的磁盘逻辑卷编号、用来分辨该摄像头数据的私有头信息等等)。服务端单元通过这个接口就可以知道有一个摄像头已请求准备录像了,它会将这些参数信息保存到缓存中,并准备接收这个摄像头发来的数据。客户端单元在录像结束时要调用停止录像接口通知服务端单元,服务端单元收到停止这个摄像头的录像消息后会将最后缓存的该路数据写入磁盘,释放为该路分配的系统资源,并更改该摄像头的录像记录。
[0050] (3)开始发送数据接口
[0051] 客户端单元通过该接口将一个时间段内的数据包都发给服务端单元,接口内包含开始录像时返回的录像句柄、要发送的数据包内容、数据包的长度、数据包的开始和结束时间,服务端单元收到数据后通过参数内带来的录像句柄就知道是哪个摄像头发来的数据,它会将数据组包缓存到一定的大小后一次写入到预先分配的一片连续的存储空间内,并更新该路摄像头的录像时长。
[0052] (4)查询录像记录接口
[0053] 客户端单元可以通过这个接口查询某个摄像头的某个时间段里的某种类型的录像情况。服务端单元从自己的数据库里把满足查询条件的所有录像记录通过回调接口一次全部返回给客户端单元。
[0054] (5)错误提示接口
[0055] 客户端单元调用每个接口失败时,可以通过该接口获取失败的错误码,以判断错误的原因。
[0056] 将媒体数据保存到磁盘阵列柜的处理流程如图4所示:
[0057] (1)当请求保存媒体数据的信令交互成功后,保存媒体数据(即录像)的程序内部就建立了保存该路摄像头的数据的任务,并已准备好接收该路媒体数据包(RTP/RTCP数据包);
[0058] (2)接收数据的线程会不停地去检测接收该路媒体数据的通信链路句柄上是否有数据到达;
[0059] (3)当收到数据包后就将数据缓存到该任务的数据链表内;
[0060] (4)当没有收到数据包时,接收线程会继续循环等待接收新的数据;
[0061] (5)在收到数据包并且已缓存到任务链表里后,向处理数据的线程发送一个已接收到了数据包的通知;
[0062] (6)处理数据的线程在收到数据到达的通知消息后,判断出是哪路摄像头的数据,然后再到该路摄像头的数据链表里提取出媒体数据,最后调用API接口,将数据发送给磁盘阵列柜内的服务端程序,发送成功后,服务端程序就将数据写入物理磁盘单元了。
[0063] 本发明的网络视频监控数据流存储系统将保存媒体数据的客户端单元和写入磁盘的服务端单元一体化集成在磁盘阵列柜上,并且采用流式存储方式来存储数据,相比于传统的保存数据的服务器和磁盘阵列柜独立分开的系统具有以下明显的优势:
[0064] (1)采用客户端/服务端的模式(即C/S模式)构建存储系统,客户端单元接收到的媒体数据直接发送给服务端单元,服务端单元通过访问磁盘阵列柜的物理磁盘单元,将数据直接写入物理磁盘单元内。这种C/S模式不同于传统的磁盘阵列柜应用系统需要通过操作系统、iscsi-initiator应用软件或HBA卡这些中间部件才能完成数据的传输和写入。该模式能有效地减少数据传输过程中的单点故障,使得数据传输方式更简捷、更容易控制和维护;
[0065] (2)在数据的存储方式上,采用流式存储方式:客户端单元和服务端单元之间仅只传递媒体数据流,服务端单元将收到的数据流按块写入磁盘阵列柜的物理磁盘单元,其中间不经过操作系统对数据以文件形式封装的中间环节,可以彻底解决目前以iSCSI方式连接的IP-SAN应用系统在存储数据的过程中因网络断连所造成的磁盘阵列柜的虚拟磁盘只读的故障,给这种故障提供了一种很好的解决方式;
[0066] (3)系统结构实现了功能一体化,客户端单元和服务端单元都嵌入到磁盘阵列柜内,由一台磁盘阵列柜完成数据的传输、保存、获取、查询、删除等所有功能。这种方式可以避免各功能分散于不同的服务器上可能出现的网络带宽限制,并能有效地减少存储系统的建设成本;
[0067] (4)服务端程序采用了磁盘写入优化技术以提高磁盘并发写入的速率:对磁盘阵列柜的物理磁盘单元直接按连续的块写入和提取的方式。在磁盘空间上采用预分配的方式,在数据到达之前预先分配一块可写的连续的磁盘区域,数据到达后将数据保存到该区域,这种磁盘写入方式可以避免在保存每块数据时还需要先遍历搜索整个磁盘空间以查找空闲的位置所花费的时间,并可以有效地减少磁盘碎片;
[0068] (5)服务端程序采用按磁盘空间大小自动循环覆盖删除数据的方式,省去人为地控制数据的删除,更方便维护。服务端程序会在保存数据的磁盘空间达到一定的上限后,按照优选的策略循环删除该空间内一些最早的数据块,删除时也是按连续的区域删除,以便让后续数据可以写入这片连续的区域。
[0069] 媒体数据的提取
[0070] 提取媒体数据的过程(即回放过程)同存储相反,需要回放客户端单元向磁盘阵列内的服务端单元请求所需的数据流,服务端单元从磁盘阵列柜里获取RTP/RTCP数据包后发给回放客户端单元,客户端单元再对数据包进行解析,还原RTP/RTCP包的原始数据内容后发送给用户操作界面,如图5所示,本发明的数据提取单元包括有提取数据控制信令模块、媒体数据提取接口、媒体数据接收模块、媒体数据处理模块、媒体数据发送模块,其中:
[0071] 一、提取数据控制信令模块
[0072] 请求回放媒体数据流的控制信令采用标准的RTSP信令,提取数据控制信令模块处理客户端单元与用户操作界面之间的RTSP交互信令。这些RTSP信令消息包含的主要方法有:OPTIONS、DESCRIBE、SETUP、PLAY、ANNOUNCE、PAUSE、TEARDOWN等等,用来实现回放正常播放、停止、暂停、快进、快退、快放、慢放、倒放、跳帧播放等功能。
[0073] (1)正常播放:按照保存数据流时,摄像头发送过来的数据流的实际速率,顺序播放录像;
[0074] (2)停止:结束播放;
[0075] (3)暂停:停止播放,但不结束,后面可以从上次结束播放的位置点继续播放;
[0076] (4)快进:可以按2、4、6、8倍速跳跃向前播放,由于播放的只是I帧视频画面,并且还会根据选择的倍数丢掉一些I帧不播放,故画面会不连续;
[0077] (5)快退:可以按2、4、6、8倍速跳跃倒退播放,由于播放的只是I帧视频画面,并且还会根据选择的倍数丢掉一些I帧不播放,故画面会不连续;
[0078] (6)快放:可以按2、4、6、8倍速连续快速播放,会根据选择的速率播放所有的视频画面,画面保持连续;
[0079] (7)慢放:可以按2、4、6、8倍速连续慢速播放,会根据选择的速率播放所有的视频画面,画面保持连续;
[0080] (8)倒放:同正常播放刚好相反,它是倒着放,从结束时间开始,向开始时间方向逆序播放;
[0081] (9)跳帧播放:播放时丢掉一些视频帧,跳跃着向前播放。
[0082] 二、媒体数据提取接口
[0083] 媒体数据提取接口是客户端程序(回放程序)向服务端程序获取以前保存的媒体数据的API接口,服务端会从磁盘阵列柜内提取出请求的数据后通过对应的接口发送给回放程序。这些接口主要包括:开始取数据流接口、停止取数据流接口、获取摄像头私有文件头信息的接口。
[0084] (1)开始取数据流接口
[0085] 当用户通过用户操作界面要求查看某个摄像头的某个时间段内的视频时,用户操作界面会向提取数据的客户端程序(即回放程序)发送请求消息,消息体内带上摄像头ID、录像的起始时间和结束时间、录像的类型等参数。客户端单元通过媒体数据提取接口向服务端单元请求对应的视频流,服务端单元将客户端单元请求的数据从物理磁盘单元内取出,然后发送给客户端单元;
[0086] (2)停止取数据流接口
[0087] 客户端程序(即回放程序)通过开始取数据流的接口所返回的句柄作为参数,通知服务端单元停止取流,服务端单元收到消息后停止从物理磁盘单元内提取数据;
[0088] (3)获取摄像头私有文件头信息接口
[0089] 摄像头的私有文件头信息包含了媒体流的类型、编码格式、传输参数等信息。在回放某个摄像头的录像时需要先获取这些信息,客户端单元就要通过该接口向服务端单元发送对应的请求,服务端单元再从磁盘内提取出来发给客户端单元。
[0090] 三、媒体数据接收模块
[0091] 回放程序向磁盘阵列柜内的服务端单元请求获取某个摄像头的媒体数据成功后,媒体数据接收模块将接收到的每个RTP/RTCP包缓存到的数据链表里,以交给媒体数据处理模块来处理链表里的数据。
[0092] 四、媒体数据处理模块
[0093] 媒体数据处理模块会不断地从数据链表里提取出收到的每路数据包(RTP/RTCP数据包),并根据数据包保存的格式对每个包进行解析,获取这个数据包和前一个数据包的时间间隔、数据包的类型、包的长度,数据包的内容等。最后根据这个包和前一个包的时间间隔,将这个包在需要发送的时间点到达时发送给用户操作界面。
[0094] 五、媒体数据发送模块
[0095] 该模块负责将解析完了的RTP/RTCP媒体数据包,在需要发送的时间点发送给用户请求回放的用户操作界面。
[0096] 本系统采用提取媒体数据的客户端程序(即录像回放程序)来实现向磁盘阵列柜内的服务端程序请求数据流和对外发送数据流的功能,回放程序内部处理的流程如图6所示:
[0097] (1)当请求某路视频回放的RTSP信令建立成功后,就创建了回放该路视频数据的线程,该线程将会向磁盘阵列柜内的服务端程序请求所需时间段的数据、然后将接收到的媒体数据发送给用户操作界面;
[0098] (2)处理回放的该路视频数据的线程会不断循环地向服务端程序请求回放时间段内的媒体数据,并将接收到的媒体数据缓存到该路任务的数据链表里,等待媒体数据发送模块将数据取出后发送给用户操作界面;
[0099] (3)数据包取出后,根据包头和包尾添加的字段的信息,获取这个数据包和上一个发送了的数据包的时间间隔,这个间隔就是接收包时前后两个数据包的时间间隔差;
[0100] (4)当这个时间间隔到达后,就将该数据包发送给用户操作界面,否则就阻塞在此,等待时间点到达后再发送该数据包;
[0101] (5)当前数据包发送完后,再从任务的数据链表里获取下一个数据包,再循环执行第3步。
[0102] 本系统将发送数据的回放客户端和从磁盘内提取数据的服务端一体化集成在磁盘阵列柜上,采用优选的数据提取方式,相比于传统的数据回放服务器和磁盘阵列柜独立分开的系统具有以下明显的优势:
[0103] (1)服务端程序采用优选的数据提取方式,以提高磁盘的并发读取的速率,提取数据的过程同写入过程相反,服务端单元收到对某个摄像头的某段时间内的录像回放请求后,循环从磁盘阵列柜的物理磁盘单元内按连续的块提取出数据,原先写入时是以多大的块写入的,现在就以多大的块提取出来,这种提取方式可以完全还原写入时的数据。服务端程序一次性提取出多个数据包,并将数据包组合到一定的大小后一次性发送给回放客户端程序,这样可以减少磁盘读取的次数,提高磁盘并发读取的速率,从而提高该存储系统能支持的最大回放路数;
[0104] (2)回放客户端程序更简化,它不需要像专用独立的回放程序那样,还需要自己去查找网络虚拟磁盘内对应的文件内的媒体数据,减少了这个环节,回放程序只需对收到的数据包先缓存下来,然后进行解析后,再按用户要求的回放速率对外发送数据包;
[0105] (3)回放客户端和提取数据的服务端一体化集成在磁盘阵列柜内,可有效避免回放数据量大时造成的网络拥塞。
[0106] 本发明网络视频监控数据流存储系统相比于传统的网络存储系统具有如下优势:
[0107] (1)跨平台C/S模式(即客户端/服务器模式)工作,基于标准Socket(网络套接字)通信,结构简洁清晰。
[0108] 采用C/S模式构建存储系统,不同于传统的存储应用系统需要通过操作系统、iscsi-initiator应用软件或HBA卡这些中间部件才能完成数据的传输和写入。
[0109] C/S模式能有效地减少数据传输过程中的单点故障,使得数据传输方式更简捷、更容易控制和维护。
[0110] (2)监控视频数据流式存储,提高系统整体效率。
[0111] 客户端单元和服务端单元之间仅传递媒体数据流,服务端单元将收到的数据流按块写入磁盘阵列柜的物理磁盘单元,其中间不经过操作系统对数据以文件形式封装的中间环节,可以彻底解决目前以iSCSI方式连接的磁盘阵列柜应用系统在存储数据的过程中因网络中断所造成的磁盘阵列柜的虚拟磁盘只读的故障,给这种故障提供了一种很好的解决方式,提高存储系统的稳定性。
[0112] (3)存储系统功能一体化,降低系统成本。
[0113] 客户端单元和服务端单元都嵌入到磁盘阵列柜内运行,由一台磁盘阵列柜完成数据的传输、保存、获取、查询、删除等所有功能。这种方式可以避免各功能分散于不同的服务器上可能出现的网络带宽限制,并能有效地减少存储系统的建设成本。
[0114] (4)提高存储系统并发写入速率。
[0115] 系统为每条视频流分配一对Socket实现存储,由于Socket的轻量级和高效性,系统可以维护多对Socket而占用系统资源很少,提高系统整体的并发能力。当一个客户端单元通过Socket请求连接时,服务端单元分配存储资源,在服务端单元初始化存储资源时完成,服务端单元根据客户端单元传入的初始化存储参数,分配连续的存储空间来保存数据,减少写入数据的过程中查询磁盘内可写的空闲位置所花费的时间,也避免了数据分散于磁盘内各个不同的位置区域,能有效地减少磁盘碎片的产生和磁针的跳跃频率,从而提高磁盘的读/写速率和磁盘阵列柜的并发存储能力。
[0116] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。