Onvif协议接入分析学习总结(基础部分)

Onvif协议接⼊分析学习总结(基础部分)
Onvif协议基础
1、Onvif协议是基于TCP协议传输的⼀套⽹络视频设备之间的信息交换定义通⽤协议,所以你⾸先需要搞定TCP传输协议。
n0706
2、Onvif协议的信令是Body为SOAP信息的HTTP协议信息,所以你需要了解⼀些HTTP协议的内容,以及详细了解SOAP协议,以及XML协议。
POST /onvif/device_service HTTP/1.1
Host: 192.168.100.125
Content-Type:application/soap+xml;charset=utf-8
Content-Length:275
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="/2003/05/soap-envelope"
xmlns:tds="/ver10/device/wsdl">
<soap:Body><tds:GetDeviceInformation /></soap:Body></soap:Envelope>
以上是⼀条Onvif客户端向前端设备发起的获取设备信息的请求,可以看到头部是⼀段HTTP的Header,⾥⾯包含了⼀些基础信息,默认是短连接,只有事件的PULL模式会⽤到长连接需要在头部设置Keep-alive(HTTP协议),否则默认短连接。
底下是⼀段HTTP的Body,SOAP协议是⼀种基于XML的协议,主要格式就是
<SOAP-ENV:Envelope 各种属性>
 <SOAP:HEADER>
 </SOAP:HEADER>
 <SOAP:Body>
宝贝一家亲 </SOAP:Body>
</SOAP-ENV:Envelope>
上⾯的SOAP请求没有带Header是因为该设备并没有鉴权相关的内容,⽽⼀般设备都会需要鉴权内容,Header⾥应该包含⽤户密码等信息,⽤户鉴权这个需要在后⾯⽂章讲解,Onvif⽀持两种鉴权⽅式,⼀种是WS-UsernameToken(常⽤,需要理解并实现),另外是Digest(RTSP取流也会⽤到的鉴权⽅式,可以尝试了解)。
s:Body后⾯跟的就是Onvif协议设定的请求内容如:
那边s:Body如下:
外国文学评论
<SOAP:Body>
<tds:GetCapabilities>
<tt:Category>Analytics</tt:Category>
<tt:Category>Media</tt:Category>
</tds:GetCapabilities>IFANY
</SOAP:Body>
3、Onvif协议实现的请求队列最好为串⾏队列,同时建议实现的是同步请求。虽然Onvif协议是⽀持前端IPC的设备配置更新时产⽣事件并上报,但是⽬前市⾯上的⼚家并没有实现该事件,所以异步⽆法保证数据的准确性(请根据使⽤场景择优选择)。
4、接下来就是理解Onvif协议,根据你所需要的设备信息去实现对于的Onvif信令,然后建⽴TCP连接发送信令获取数据。
5、设备在线状态的判断,Onvif协议⾥⾯并没有保活机制(只有Discovery协议⾥有上线发Hell机制,下线发Bye的机制,但是这是正常设备下线流程,真实环境很少有),所以安照Onvif标准实现的话,你是⽆法感知设备是否可⽤。
这⾥提供⼀种思路,就是⾃⼰实现⼀种保活机制,设置定时器,定时向设备发送GetDeviceInformation信令,通过该信令的响应判断前端设备是否可⽤。
2014年4月15日召开了什么会6、Onvif协议⾥⼀般常⽤的功能:
>台账

本文发布于:2024-09-22 13:38:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/136934.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   协议   信息   实现   需要   请求   内容   没有
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议