摄像头监控管理系统理论

本系统采用的是摄像头远端推流,本地管理远程拉流的模式,也就是常用的推拉流模式系统,管理系统是基于摄像头本地网络的http协议管理,主要是对摄像头进行各种传输参数的设置,及画面的本地查看,本系统的整体架构包含了三个模块:摄像头的推流模块,服务器的转发模块,本地管理的系统模块。

流媒体及视频行业中常用的模式分为两种:推拉流模式及p2p模式,何为推拉流模式?通俗的解释就是摄像头将视频数据使用指定的协议推送到流媒体服务器,再由观看方从流媒体服务器拉取视频数据到本地进行播放。整个架构模式参与者有三方,第一、摄像头端的推流方,这方是视频数据的来源,也就是整个系统数据的提供方,第二、流媒体服务器方,这方主要的功能就是将视频数据进行集中转发,并且在必要的时候进行视频数据存储及视频转码,第三方、视频资源的消费端,这方主要是用来查看视频图像观察摄像头场景,数据来源是流媒体服务器,属于数据拉取方。p2p模式全称是:点对点传输模式,采用的是摄像头和观看方直接数据流通的方式,与推拉流模式想比缺少了服务器的转发,数据更快捷,延时更小,缺点是数据可控性下降,无法对传输中的视频数据进行保存、转码、分发等。不同的使用场景根据需要可以采用不同的架构模式,至于具体采用那个模式,这需要开发自己来判断,本系统采用的就是便于数据控制的推拉流模式。

推拉流模式结构图

推拉流模式作为一种流媒体行业的常用架构模式,使用的范围非常宽广,大到各种智能电视、网络直播平台,小到各种网络摄像头及家庭智能监控,几乎涵盖了视频行业的各个领域,为了适应各个行业的特性,推拉流模式衍生出许多不同的推拉流协议,常用的有:rtmp、rtsp、hls等等。

除了rtmp、rtsp、hls、mms等常用的公共协议,许多网络公司还会根据自己的需求定制属于自己的加密网络协议,这种协议不具有通用性,本文中不会重点详述。

rtmp全称为实时消息传输协议(Real Time Messaging Protocol),是目前市场上使用最为广泛的流媒体协议之一,使用领域相对较广,最近几年较为热门的网络直播技术,其核心的协议大多都是rtmp协议。rtmp是一种基于TCP协议的应用层协议,RTMP是一个非常大的协议体系,除了RTMP本身的基本协议之外,还包含有RTMPT/RTMPS/RTMPE等多种变种协议,市场使用频率也非常之高。其在流媒体系统中的主要作用是帮助流媒体平台和支持RTMP协议的流媒体播放器之间进行音视频数据通信,是一种进行实时数据通信的网络协议,延时相对较小。

rtsp全称为实时流传输协议(Real Time Streaming Protocol),属于TCP/IP协议体系中的一个应用层协议,主要应用在智能电视和智能机顶盒业务方面,实时性相对较小,延时比之rtmp略大,该协议属于客户端/服务器模型,是一个基于文本的传输协议,主要是用在client和server之间建立会话。是由哥伦比亚大学、网景和RealNetworks公司联合提交的IETF RFC标准,标准号为RFC2326。RTSP一般会配合RTP/RTCP协议共同使用来完成音视频数据的传输,使用RTP和RTCP协议来保证音视频数据对TCP和UDP协议的兼容,服务器可以同时支持TCP和UDP访问拉流,很好的兼容了各个环境下的异常使用。

HLS全称HTTP直播流(HTTP Live Streaming),是一种基于HTTP协议的流媒体网络传输协议,最初是由苹果公司设计提出并开发实现。它的工作原理是把整个视频流分成许多的小的基于HTTP的文件,根据用户播放速度来下载一个或者多个小文件,能够实现边下载边播放的功能。甚至当音视频流正在播放时,用户可以从许多不同的流媒体库中选择不同大小相同视频段的文件进行下载,或者允许流媒体会话自主适应不同网络速率,下载不同的媒体库文件,这样就可以达到网络良好时播放高清流媒体,网络差的情况下自动转到低码率视频流,可以尽量的减少视频播放中因网络较差而引发的播放中断问题。在播放HLS协议流时,客户端首先会第一时间下载一个包含所有媒体信息及元数据地址的文件(.m3u8文件),用于寻找服务器中可用的媒体流及分片地址,然后再根据媒体库及分片地址顺序的下载并播放媒体流。HLS是基于HTTP协议的请求/应答协议,所以使用的都是HTTP报文请求,HLS可以穿过所有允许HTTP报文数据通过的防火墙及代理服务器。苹果公司在HLS协议提出之时就已经把HLS协议草案逐步提交到IETF进行标准制定,并且在第一阶段中已作为一个非正式的标准提交到IETF机构中。但是,虽然苹果公司一直在提交HLS协议相关的更新,IETF却并没有关于制定此标准的进一步的动作。

MMS全称Multimedia Messaging Service,是一种串流媒体传送协议,可以用于传送音频、动画和视频等多媒体信息和各种视频流数据。MMS的工业标准是由3GPP和WAP Forum所制订的。因此,MMS被设计成可以在WAP协议上运行的上层协议,它可以使用各种传输格式。MMS是微软的私有协议,不属于被IETF制定的公共协议,其发展是建立在短信业务上的,随着短信业务的逐渐过时,MMS慢慢的发展成了微软的流媒体私有协议,由于其是私有协议的原因,使用领域较为狭窄,国内使用者较少,相对于其他的流媒体协议而言,具有一定的劣势,无法被公众大范围使用,就必然会使得其在应用方面会有所局限。

本系统中采用的是rtmp协议来实现音视频数据的传输,接下来本文将会重点的详述RTMP协议及在系统中的运用。

RTMP协议是应用层协议,需要底层协议来保证其可靠性,通常是使用TCP协议来保证可靠性,当然也不全都是使用TCP协议,P2P系统就非如此,P2P是基于udp协议的流媒体网络架构,在p2p架构中rtmp的可靠性需要开发者自己来保证,比如行业内较为常用的udt协议。Rtmp协议在底层通道建立之后需要经过握手来建立rtmp的连接,握手的含义类似tcp三次握手,用来确保连接双方数据的通信安全可达。客户端和服务器端在rtmp握手时各发送了三个数据包,分别是client端的:C0,C1,C2,及server端的S0,S1,S2,其交互流程是:客户端向服务器发送C0,C1数据包做第一次握手,服务器接收到C0数据包之后向客户端发送S0,S1数据包做确认握手,客户端接收到服务端发送的S0,S1确认数据包之后会再次向服务器发送一个C2数据包,当服务端接受到C2数据包之后返回客服端一个S2数据包,用来确认C2数据包接收,此时服务器端的握手流程已走完可以发送其他业务数据,当客户端接收到S2数据包时也意味着客户端的握手完成可以发送其他业务数据。

    

rtmp握手流程图

当rtmp握手连接成功后就可以相互发送消息,rtmp消息分为:命令消息、数据消息、共享消息、音频消息、视频消息、合计消息。

命令消息,就是在客户端和服务器端之间传递AMF编码的各种命令消息。这些命令消息的消息类型值为0x14或者0x11,0x14类型的命令消息进行AMF0(AMF0 command 0x14) 编码,0x11类型的命令消息(AMF3 command 0x11)进行AMF3编码。这些命令消息发在客户端与服务器之间来回发送,告诉对端本端要进行的一些操作,比如连接、创建流、设置参数、发布、开始、对端暂停等。像onstatus、result 类的命令消息,是用于通知发送者请求的结果和状态。一个命令消息由命令名称、事务ID和包含相关参数的命令对象组成,一个完成的命令消息就能表示一条命令请求,一个rtmp请求中可以携带多个命令消息。

数据消息,就是客户端与者服务器端之间来回发送的各种数据的消息。每个消息又被称为元数据,元数据包括音频、视频等数据的详细信息,比如创建时间,主题,时长等等。这些消息的消息类型为0x12或者0x0f,0x12类型的数据进行行 AMF0 编码,0x0f类型的消息进行AMF3编码。

共享消息,其实是一个Flash对象消息(一个名/值对的集合),这个对象在多个不同客户端、应用实例中保持同步。消息类型0x13用于AMF0编码、0x10用于AMF3编码都被为共享对象消息。每个消息可以包含有不同事件。

音频消息,客户端或者服务器端通过这一消息发送音频数据到对端。消息类型0x08为音频消息保留。

视频消息,客户端或者服务器端通过这一消息发送视频数据到对端。消息类型0x09为视频消息保留。

通过这些消息摄像头就可以将音视频数据流推送到流媒体服务器,同时管理系统也可以顺利的将流媒体服务器的音视频数据拉取到本地进行播放,rtmp协议是贯穿整个架构的核心内容,是保证摄像头数据流通的可靠技术。

保证视频正常的在系统中播放时本系统的核心,但不是全部,管理系统的另一部分就是本地管理平台,通过这个管理平台我们可以远程设置摄像头的各种参数,例如:码率,视频的长宽,分辨率等等。那么我们是如何将这些参数可靠的传输给摄像头呢?这里面我们应用了另一常用的公共协议http协议,使用http协议来传递摄像头的各种操作参数。

HTTP全称超文本传输协议(HyperText Transfer Protocol),是目前互联网上应用最为广泛的一种超文本传输协议,HTTP协议最初的设计思想是为了提供一种能够发布和接收HTML页面的方法,随着时代的发展渐渐的演变成了现在的HTTP网络协议,HTTP协议最初诞生在美国,由Ted Nelson在1960年设计的一种通过计算机来处理文本信息的方法,并称之为超文本,这成为了超文本传输协议(HTTP)标准架构的原始版本。之后由Ted Nelson组织协调互联网工程工作小组和万维网协会共同合作研究,最终发布了一系列的IETF RFC,HTTP 1.1定义在著名的RFC 2616标准之中。

http协议是互联网上使用最广泛的超文本协议,从最基本的浏览网页,到数据下载等都能看到http的影子,http协议是clinet/server模式,HTTP是一个客户端(client)和服务器端(server)请求和应答的标准(TCP)协议。协议的使用过程中必然是需要服务器和客户端的双方面支撑,只有架构出完整的C/S模式才能使得HTTP协议有存在的必要,所以本系统需要在摄像头中内置一个小型的http服务器,用来完成http数据的接收工作,http服务器根据开发语言的不同有许多的版本,常用的C语言版本:nginx,java语言版本:Tomcat等,本系统采用的是NGINX,之所以使用nginx是因为C语言代码运行速度快,代码量小,容易移植。

http协议分为http header和http body两部分,http header又称作http协议头,http协议头包含四个部分,通用头、请求头、响应头和实体头,一个完成的http协议头会包含许多的协议头域,而每个头域都包含一个域名和一个值,中间用冒号(:)分隔开,这许多的协议头域共同的保证协议消息的完整性和可用性,http body又称作http协议体,里面存放的是需要传输的各种文本或者超文本数据,这些数据无格式限制,支持二进制、十六进制等,甚至还支持json这种公共的文本协议信息。

本系统中我们使用http协议将需要设置的摄像头监控参数以json的格式放到协议体中上传到摄像头中,摄像头接收到上传的参数解析json数据串,获取参数进行设置,这样就完成了摄像头的参数远程设置。

本系统核心在于两个地方,第一、音视频数据的单路上传和多路分发,第二、摄像头的远程控制系统,第一个是保证系统正常运行的关键,第二个是保证系统能够实现远程控制的核心。有了这两个核心模块,监控系统就发生巨大的变化,从本地观看到远程观看,随时随地打开都能看到摄像头画面,简单方便快捷。
 

猜你喜欢

转载自blog.csdn.net/u012023606/article/details/83185198