您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 浙江大华DH650平台设备接入协议
第1页共31页DH650平台设备接入协议1.概述DH650平台设备接入协议(后面简称本协议)描述DH650平台的设备接入协议,规定了设备接入DH650平台进行通信时的命令和数据交互的细节。本协议引用到的相关规范:zIETFRFC2616:HypertextTransferProtocol–HTTP/1.1,FieldingR.etal.,June1999.zExtensibleMarkupLanguage(XML)1.0Specification(SecondEdition),T.Bray,J.Paoli,C.M.Sperberg-McQueen,E.Maler,6October2000.zIETFRFC2326:RealTimeStreamingProtocol(RTSP),SchulzrinneH.,RaoA.andLanphierR.,April1998.zIETFRFC2327:SDP:SessionDescriptionProtocol,HandleyM.,JacobsonV.andPerkinsC.,April1998.zIETFRFC3550:RTP:ATransportProtocolforReal-TimeApplications,SchulzrinneH.etal.,January1996.zIETFRFC3016:RTPPayloadFormatforMPEG-4Audio/VisualStreams,KikuchiY.etal.,November2000.zIETFRFC3984:RTPPayloadFormatforH.264Video,WengerS.etal,February2005.第2页共31页2.协议整体设计2.1.通讯协议组成通讯协议由一个命令通道和零到多个数据通道组成。命令通道采用HTTP+XML的协议格式,保持长连接,所有命令都有应答,双向都可以主动发起命令,接收应答时需判断是应答还是另一个主动命令请求。命令的处理必须依次进行,不能乱序。数据通道采用标准RTSP、RTP协议,其中RTSP协议进行数据传输的控制,RTP协议进行具体数据的传输。数据通道传输的内容由RTSP的URL控制,此URL由相应的命令交互时生成,URL一般是只能使用一次。当需要安全传输的时候,可选支持SSL进行加密,即用HTTPS连接,传输的数据格式保持不变。2.2.命令基本格式命令一般使用HTTP的GET命令来发起请求,命令的参数附加在URL上,整个URL的格式如下所示:/svc/operation?param1=value1¶m2=value2如果参数太长,也可以改用HTTP的POST命令,将参数放入HTTP的body中,参数形式不变。具体各命令的参数,见下面命令协议格式中相应命令的描述。发送命令时以及命令的应答,HTTPheader中需要添加CFL_Asynch字段,传输一些固定的基本信息,其格式如下:CFL_Asynch:version=3.0.2.0&operation=operation&session=session&sequence=seq第3页共31页每个命令的请求和应答,都需要带此CFL_Asynch字段信息,当前协议版本为3.0.2.0,操作类型同URL中的operation,session的值在登录(Login命令)时为0,登录成功后由设备生成并返回给请求者,后续所有命令都必须带此有效session,sequence是操作顺序号,从1开始,每个命令递增,双向各自独立计数。命令的应答除了带CFL_Asynch字段外,使用HTTP的statuscode表示命令执行结果,一般使用200OK来表示执行成功。执行失败的statuscode见各命令的具体定义。执行成功时,相应的回复数据存放在HTTP的body中,使用XML格式进行编码。XML中根节点是body,里面有多个子节点,各子节点的内容见各命令具体定义。命令应答的statuscode如下表:应答错误码Statuscode说明ERR_OK200OK命令成功ERR_PARAMINVALID471PARAMINAVLID命令参数错误ERR_AUTHFAILED472AUTHFAILED认证失败ERR_TOOMANYCONNECT473TOOMANYCONNECTION连接数超上限ERR_NOTFOUND474NOTFOUND操作相应的对象不存在ERR_OPERATEFAILED475OPERATEFAILED操作失败以开始实时预览为例,命令的请求和应答格式如下:命令请求:GET/svc/StartRealPlay?ChannelID=1&SubStream=sub1HTTP/1.1CFL_Asynch:version=3.0.2.0&operation=RequestVideo&session=1234567890&sequence=4User-Agent:CFL_User/1.0Content-Length:0第4页共31页命令应答:HTTP/1.1200OKServer:CFL_Server/1.0CFL_Asynch:version=3.0.2.0&operation=RequestVideo&session=1234567890&sequence=4Content-Type:text/xmlContent-Length:xxx?xmlversion=”1.0”bodyProtocolRTSP/ProtocolURLrtsp://10.0.0.2:554/svc/RequestVideo?token=12345/URLURL2rtsp://60.0.0.2:554/svc/RequestVideo?token=12345/URL2ConnectTypedirect/ConnectTypeConnectID0/ConnectID/body数据通道使用标准RTSP/RTP协议,具体见后面数据协议格式相关章节。2.3.设备主动连接设备可选支持设备主动连接,需要先在设备上配置启用设备主动连接,以及设备名称,连接的平台的IP和端口。设备端进行主动连接时,向所配置的平台的监听IP和端口发起连接请求,连接成功后,设备先发一个HTTP的OPTIONS命令,在header中增加CFL_DeviceConnect字段,说明设备名称、连接类型和连接ID,对于命令通道,连接类型为command,connectid为0,平台应答成功,同时提供数据通道的IP和端口。后续命令流程与平台主动连接一致,都是从平台进行login开始。第5页共31页对于需要进行数据传输的命令,设备会返回使用设备主动连接以及连接号。设备向数据通道的IP和端口发起另一个主动连接,同样先发送HTTP的OPTIONS命令,header中CFL_DeviceConnect字段发送连接类型是data,connectid为需要进行数据传输命令所返回的connectid,平台应答成功。然后后续流程与平台数据传输的主动连接一样,都是从平台发送describe、setup等命令开始。无论是命令通道还是数据通道的设备主动连接,CFL_Asynch字段仍需要发送,operation为DeviceConnect,命令通道的设备主动连接session为0,数据通道的设备主动连接session为对应的命令通道的session。如果主动连接成功,平台会返回200OK。如果参数错误,或者设备不存在,或者connectid不存在,则返回错误码。此时平台会把连接关闭。应答的错误码:ErrcodeErrstring说明ERR_OK成功ERR_PARAMINVALID参数错命令通道的设备主动连接例子:请求格式:OPTIONS*HTTP/1.1CFL_Asynch:version=3.0.2.0&operation=DeviceConnect&session=0&sequence=4CFL_DeviceConnect:devname=mydevice&type=command&connid=0User-Agent:CFL_User/1.0Content-Length:0应答格式:HTTP/1.1200OKServer:CFL_Server/1.0CFL_Asynch:version=3.0.2.0&operation=DeviceConnect&session=0&sequence=4第6页共31页CFL_DeviceConnect:devname=mydevice&type=command&connid=0Content-Type:text/xmlContent-Length:xxx?xmlversion=”1.0”bodyDataIP10.0.0.5/DataIPDataPort3600/DataPort/body数据通道的设备主动连接例子:请求格式:OPTIONS*RTSP/1.0CFL_Asynch:version=3.0.2.0&operation=DeviceConnect&session=1234567890&sequence=4CFL_DeviceConnect:devname=mydevice&type=data&connid=4User-Agent:CFL_User/1.0Content-Length:0应答格式:HTTP/1.1200OKServer:CFL_Server/1.0CFL_Asynch:version=3.0.2.0&operation=DeviceConnect&session=1234567890&sequence=4CFL_DeviceConnect:devname=mydevice&type=data&connid=4Content-Length:0第7页共31页3.命令协议格式3.1.登陆Login登陆命令字是Login,由平台发送给设备,设备应答。平台首先执行登录命令,登陆成功后才执行其他命令。登录成功会返回session,后续所有命令都带此session。请求的参数:ParamnameParamvalue说明Username登陆平台名称Password登录密码应答的错误码:ErrcodeErrstring说明ERR_OK成功ERR_PARAMINVALID参数错ERR_AUTHFAILED认证失败ERR_TOOMANYCONNECT连接数超上限成功时应答的参数:ParamnameParamvalue说明SessionSession值,与返回的CFL_Asynch中的session值相同第8页共31页3.2.注销Logout注销命令字是Logout,由平台发送给设备,设备应答。平台注销,此时session会被置无效。另外如果网络断线,相应的登录也会被自动注销,session同样被置无效。请求参数:(无)应答的错误码:ErrcodeErrstring说明ERR_OK成功ERR_PARAMINVALID参数错,例如session不存在成功时应答的参数:(无)3.3.心跳保活Heartbeat心跳保活命令字是Heartbeat,由平台发送给设备,设备应答。登录成功后,平台需要定期发送Heartbeat命令进行保活,超时不发送会自动关闭连接进行注销。一般平台发送间隔是30秒,如果设备60秒不收到保活则超时,关闭session,关闭连接。请求参数:(无)应答的错误码:ErrcodeErrstring说明第9页共31页ERR_OK成功ERR_PARAMINVALID参数错,例如session不存在成功时应答的参数:(无)3.4.开始实时预览RequestVideo开始实时预览命令字是RequestVideo,由平台发送给设备,设备应答。平台请求实时预览视频,设备端返回连接的URL,然后平台通过数据传输协议获取数据,当前使用RTSP协议。平台主动连接时,连接的IP、port在U
本文标题:浙江大华DH650平台设备接入协议
链接地址:https://www.777doc.com/doc-3583172 .html