基于Onvif协议的视频监控对等网络库的设计

2015-10-31 02:11姚严峰刘国辉
电子设计工程 2015年20期
关键词:客户端服务器流程

姚严峰,刘国辉

(武汉邮电科学研究院湖北武汉470030)

基于Onvif协议的视频监控对等网络库的设计

姚严峰,刘国辉

(武汉邮电科学研究院湖北武汉470030)

为了实现视频监控系统中远程传输音频、视频更加稳定、流畅的需求,提出了一套更加合理的选择和实现TCP、UDP连接的设计方案,并完成系统的软件实现。通过测试工具进行连接方式测试,并将它放在视频监控系统里试验远程传输视频、音频的画面,得出了对等网络库可以准确选择连接方式、画面声音质量稳定、播放流畅的特点,达到了设计要求。

视频监控;设计;对等网络库;视频;音频

随着流媒体技术、网络技术的发展以及相关传输协议、视频编码标准的成熟[1],视频监控系统已由最初的模拟视频监控系统阶段发展到了网络视频监控系统阶段,采用流媒体传输技术的网络视频监控系统因其具有视频数字化、监控网络化和控制智能化等特点而成为当前视频监控领域研究的热点。由于流媒体对IP网络的QoS有较高的要求,而IP网络的结构特点决定了其不能提供足够的网络带宽、较小的网络延时和较低的丢包率,所以流媒体和IP网络在QoS方面的矛盾影响了流媒体在IP网络上的应用效果[2]。

对等网络流媒体系统的低消耗和高可扩展性很好的解决了传统流媒体系统中服务器和网络的高压力问题,使得为用户提供高质量网络视频服务成为可能。在随机的拓扑结构中,由于邻居选择的随机性和不确定性,使得网络系统中存在主干网络压力大、启动延迟和播放延迟长以及帧丢失率高等问题[3]。

1 NVR中对等连接的设计流程

当IE插件客户端需要获取外网设备的数据时,网络库模块会调用对等网络库,具体流程如图1所示。

图1 客户端网络库对对等网络库调用流程图Fig.1Client network library on peer to peer network library call flow chart

在登录以太网上的NVR设备时,客户端需要知道设备的ID标识符和拥有登录设备的权限,向P2P总服务器发送请求信息,总服务器收到请求信息后,通过查询数据库,向客户端反馈服务器列表信息,客户端分析服务器列表信息,向设备注册的服务器发送设备的登录信息请求,次级服务器收到登录信息请求后,向客户端反馈设备的登录信息,客户端根据设备反馈的登录信息选择合适的连接方式尝试登录,登录成功后,客户端和设备之间就可以传输视频数据、音频数据和用户数据,从而达到用户在客户端操控设备的目的。

2 对等网络库的具体设计

2.1向服务器请求目标设备的信息

获取p2p服务器列表,列表服务器:p2pserverlist.dddns.org,端口:6663,该服务器支持tcp和udp连接,tcp和udp端口相同。消息IDP2P_MSG_GET_SERVER_LIST=1015,该消息只有头部,不带消息体。服务器回复当前p2p的服务器列表,该回复消息id依旧是1015,回复消息由p2p的头部和xml数据构成,xml数据中包含当前服务器的数量(server_cnt),每个服务器的域名(server_dn)与端口(server_port)。

获取目标设备信息,新版本添加了多服务器支持之后,设备会向就近的服务器进行注册,当服务器出现故障时,设备也会自动切换到工作正常的服务器,在获取目标设备信息时,需要向第2步获取到的所有服务器列表发送获取目标设备信息的请求,服务器的回复可能有3种情况:设备不存在,设备不在线,成功。取返回成功的服务器的数据作为连接设备的信息。服务器都支持tcp和udp连接,获取目标设备信息可以通过tcp发送,也可以通过udp发送,为了提高连接速度,客户端应同时向服务器群请求数据,而避免依次请求,导致连接时间过长。

图2 对等网络库通信流程概图Fig.2Peer to peer network library communication process overview

2.2连接目标设备

P2P服务器返回节点信息,返回信息中包括如下内容:设备是否在线,是否尝试使用lan连接,通过tcp是直连还是非直连,是否尝试使用udp连接。连接尝试的顺序为:

1)私网地址局域网直连(如果try_lan==1);

2)公网地址广域网tcp直连(如果connect_direct==1);

3)广域网udp直连(如果try_udp==1,并且直连udp hello完成);

4)广域网udp转发(如果try_udp==1,并且非直连udp hello完成);

5)广域网tcp转发(如果connect_direct==0)。

根据服务器反馈的信息,客户端进行不同的处理[1],如果设备不在线,提示登陆失败,设备不在线,并向服务器报告连接结果,连接过程终结;否则进入下一步。

如果try_lan的值为1,客户端应使用局域网地址(target_ip_lan)和p2p端口(target_port)进行tcp连接尝试,否则跳入下一步。连接流程如下:

1)和目标设备建立tcp连接;

2)发送bind请求进行绑定,bind的请求的to_uid应填目标设备的uid;

3)绑定成功即可使用直接使用p2p协议进行通信,通信时用户数据应添加p2p头,然后再通过socket发送给目标设备,p2p头部中to_uid应填写目标设备的uid,from_uid应填客户端的uid,to_port和from_port可以不用填,msg id应填P2P_MSG_ID_USER;

4)当客户端和目标设备连接成功之后,应向服务器报告连接结果;

5)通信完成之后断开socket连接;

6)连接过程终结。

如果connect_direct的值为1,客户端应使用目标设备ip地址(target_ip)和p2p端口(target_port)进行tcp连接尝试,否则跳入下一步。TCP连接流程如下,本流程和b流程基本一致,不一样的地方在于b使用的目标设备的私有ip,而本流程使用的是目标设备的外网ip。

2.3与目标设备建立TCP连接

如果connect_direct的值为1,客户端应使用目标设备IP地址(target_ip)和p2p端口(target_port)进行TCP连接尝试,否则跳入下一步。TCP连接流程如下,本流程和b流程基本一致,不一样的地方在于b使用的目标设备的私有IP,而本流程使用的是目标设备的外网IP。

1)和目标设备建立TCP连接;

2)发送bind请求进行绑定,bind的请求的to_uid应填目标设备的uid;

3)绑定成功即可使用直接使用p2p协议进行通信,通信时用户数据应添加p2p头,然后再通过socket发送给目标设备,p2p头部中to_uid应填写目标设备的uid,from_uid应填客户端的uid,to_port和from_port可以不用填,msg id应填P2P_MSG_ID_USER;

4)当客户端和目标设备连接成功之后,应向服务器报告连接结果;

5)通信完成之后断开socket连接;

6)连接过程终结。

如果try_udp的值为1,客户端应使用目标设备ip地址(target_ip)和端口(target_port)进行UDP连接尝试,否则跳入下一步。UDP连接流程如下,整个过程都必须通过UDP协议完成:

1)向服务器发送UDP连接请求(P2P_MSG_UDP_CONNE CT_REQUEST);

2)服务器返回目标设备的UDP连接信(P2P_MSG_ UDP_CONNECT_RE PLY),同时还会提供最多10个UDP的转发节点;

3)客户端向目标设备发送udp hello请求(P2P_MSG_ UDP_HELLO),发送请求应每500 ms发送一个,连续发送5次;发送请求时,除了对目标设备发送以外,还需要同时通过10个转发节点发送连接请求,请求包p2p的头部to_uid应填写目标设备的uid,udp_ip和udp_port应填写目标设备的外网ip和p2p端口。在接收到目标设备的回复之后,客户端应记录是否可以通过UDP直连,哪些转发节点可以使用等信息;

4)连接请求设置超时时间5 s,如果在这5 s内收到目标设备的直连的udp hello包,则忽略转发节点,进入UDP直连流程;

5)如果5 s内没有收到直连回复,依据是否有收到转发的udp hello消息,判断能否使用转发节点进行UDP连接;

6)如果没有收到任何转发节点的请求,则进行tcp转发流程。

客户端使用伙伴节点ip地址(parter_ip)和端口(parter_port)进行tcp连接尝试,连接过程如下:

1)和伙伴节点建立TCP连接;

2)发送bind请求进行绑定,bind的请求的to_uid应填伙伴节点的uid;

3)绑定成功即可使用p2p协议进行通信,通信时用户数据应添加p2p头,然后再通过socket发送给伙伴节点,p2p头部中to_uid应填写目标设备的uid,from_uid应填客户端的uid,to_port和from_port可以不用填,msg id应填P2P_MSG_ID_USER;

4)当客户端和目标设备连接成功之后,应向服务器报告连接结果;

5)通信完成之后断开socket连接;

6)连接过程终结。

2.4UDP连接方式的改进设计

由于UDP连接的不可靠特点,和视频数据传输特点,UDP传输一直不能达到理想效果,经过努力对UDP通信方式作出改进,通信流程如下:PC向P2P服务器请求节点信息(P2P_MSG_GET_NODE_INFO),P2P服务器返回节点信息,返回信息中包括如下内容:设备是否在线、是否尝试使用lan连接、直连还是非直连、是否尝试使用UDP连接。

根据服务器反馈的信息,客户端进行不同的处理

1)如果设备不在线,提示登陆失败,原因是设备不在线

2)如果try_lan=1,客户端使用服务器返回的私有地址进行连接尝试,如果成功,则进入正常工作,如果不成功,这进入下一步骤,局域网连接尝试的超时时间设备2 s;

3)根据connect_direct的值判断是否可以直连,如果是直连,原有的连接逻辑不变;

4)直接使用TCP进行直连;

5)如果非直连,判断是否使用UDP连接(try_udp=1),UDP连接流程如下:

向服务器发送UDP连接请求(P2P_MSG_UDP_CONNECT _REQUEST),服务器返回对端设备的UDP连接信息(P2P_MSG_UDP_CONNECT_REPLY),同时还会提供最多10个UDP的转发节点,同时服务器会通知目标设备,并且会提供相同的UDP转发节点信息,Pc向目标设备发送UDP连接请求(P2P_MSG_UDP_HELLO),同时目标设备也会向pc发送UDP连接请求,发送请求应每500 ms发送一个,连续发送3次;同时通过10个转发节点发送连接请求,接收端应记录可以使用的转发节点以及连接速度等信息,连接请求设置超时时间5 s,如果在这5 s内收到对端的直连请求,立即中断连接请求等待,进入UDP直连流程,如果5 s内没有收到直连回复,看是否有收到转发连接请求,如果有收到,则使用转发节点进行UDP连接,如果没有收到任何转发节点的请求,则进行TCP转发流程。

6)如果是try_udp=0,直接进入TCP转发流程。

当客户端向服务器发送连接请求之后,服务器会返回对端设备的信息和代理节点的信息,而且服务器会将这些信息通告到目标设备,获取到这些信息之后,客户端和目标设备应同时向对端发送连接请求,以完成UDP打洞,同时需要通过代理节点发送连接请求,以确定可用的代理节点和代理节点的速度,以便后续使用UDP转发时优化连接速度。UDP连接请求总时间设置5 s超时,如果5 s内收到对端设备直连的UDP消息,说明UDP打洞已经成功,可以通过UDP进行直连,这是立即中断请求流程,直接进入下一环节。从服务器获取到的代理节点也不再使用。如果5 s内没有收到直连请求,则只能选择通过UDP代理的方式进行连接,如果也没有收到任何UDP代理的请求消息,则跳出UDP连接过程。

进入UDP直连之后,和TCP直连不同之处在于需要处理乱序和丢包,这部分工作需要在p2p模块中处理完成,以避免影响到上层应用软件。p2p接收模块需建立一个收到数据包的队列,将收到的数据包按照需要放入队列,上层软件获取时,一次从队列中取出数据。

UDP转发过程中最核心的内容是最有效的使用UDP的转发节点,以最大化传输效率。每个转发节点带宽不同,并且稳定性也不同,如果最有效的利用多个节点来进行转发。

在整个数据发送过程中,设备端会定期通过所有转发节点向客户端发送UDP探测消息(P2P_MSG_UDP_ROUTE_ HEARTBEAT),客户端收到探测消息,需要回复,设备端更具收到的回复的速度选择使用的转发节点。客户端收到的数据可能是从不同的转发节点转发过来的,数据的顺序会被打乱,有可能后发的包先收到,也有可能丢包,客户端需设置一个超时时间,对于媒体数据,超时时间为3s,信令数据,超时时间为5s,如果收到的后面的包并且超时时间到还没有收到数据,则认为前面发送的数据包已丢失。

3 实验应用

p2p_tool是在windos环境下使用vc++基于mfc开发的,它以对等网络库为基础,不仅可以对网络库的稳定性和实用性进行测试,还可以检测相关网络故障。测试工具界面如图3所示。

为了操作方便测试工具被设计为对话框的形式[4],操作台部分用来输入要连接的NVR设备的设备ID,服务器列表部分显示从主服务器获取的服务器列表信息,连接信息部分显示客户端从设备注册服务器获取的设备连接信息[5],最后一部分显示可用的连接方式及连接时间。

图3 测试工具界面图Fig.3The testing tool interface diagram

测试登陆的结果如图4所示。

图4 测试工具登录信息图Fig.4Test tools login information graph

在IE插件客户端的实际使用过程中,对等网络库的其他几种连接方式,都能很好的完成通信任务,精确的传输用户数据和视频数据,保证预览和回放视频画面的流畅和稳定。

4 结论

该对等网络库采用更为合理的通信模式[6],软件设计采用模块化设计思想,提高了系统的可靠性和维护性。该对等网络库已经应用于视频监控系统进行试用[7],实际应用表明该对等网络库可以准确的选择连接方式,稳定流畅的远程传输A/V文件,达到了设计的目的。

[1]郑俊飞.轨道交通车地宽带视频监控系统的研究[D].南昌:南昌航空大学,2012.

[2]何浩.基于H.264的网络视频监控系统的设计与实现[D].长沙:湖南大学,2009.

[3]张秀玲.视频监控系统研究现状与发展趋势[J].科技信息(学术版),2008(2):129-133. ZHANG Xiu-ling.Research status and development trend of video surveillance systems[J].Science and Technology Information(Academic Edition),2008(2):129-133.

[4]董向化,杨勇.基于网络的视频监控系统的设计与实现[J].通信技术,2013(2):64-66. DONG Xing-hua,YANG Yong.Design and implementation of network video surveillance system based on ommunication technology,2013(2):64-66.

[5]秦培龙.基于ARM的嵌入式视频服务器设计与实现[D].北京:中国民航大学,2008.

[6]马留英.基于3G移动通信的视频监控系统研究[D].西安:长安大学,2011.

[7]沈传兵,白文浩,崔海,等.动力系统试验工艺参数监视系统设计[J].火箭推进,2014(4):73-76. SHEN Chuan-bing,BAI Wen-hao,CUI Hai,et al.Design of process parameter monitoring system for rocket propulsion system test[J].Journal of Rocket Propulsion,2014(4):73-76.

Design of network video surveillance client's peer to peer network library based on Onvif

YAO Yan-feng,LIU Guo-hui
(Wuhan Research Institute of Posts and Telecommunications,Wuhan 470030,China)

In order to realize the remote transmission of audio and video in Video surveillance system more stable and smooth,put forward a set of more reasonable selection and implementation of TCP and UDP connection design,and implement the software of the system.Test connection style by test tools,and put it in the video monitoring system in the test of remote transmission of video and audio picture,obtained the peer to peer network library can be accurately select the connection mode,signal of video and audio quality is stable,can be smoothly play,and achieve the design requirements.

video surveillance system;design;peer to peer network library;audio;video

TN919.82

A

1674-6236(2015)20-0075-04

2014-12-24稿件编号:201412233

姚严峰(1987—),男,河南洛阳人,硕士。研究方向:通信与信息系统、物联网。

猜你喜欢
客户端服务器流程
吃水果有套“清洗流程”
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
违反流程 致命误判
中国服务器市场份额出炉
得形忘意的服务器标准
本刊审稿流程