zoukankan      html  css  js  c++  java
  • ONVIF协议学习笔记

     一、理解

    1.1 技术理解

    ONVIF = 服务端 + 客户端 =(Web Services + RTSP)+ 客户端 = ((WSDL + SOAP) + RTSP) + 客户端

    WSDL是服务端用来向客户端描述自己实现哪些请求、发送请求时需要带上哪些参数xml组织格式;SOAP是客户端向服务端发送请求时的参数的xml组织格式

    Web Services实现摄像头控制(比如一些参数配置、摄象头的上下左右(PTZ)控制);RTSP实现报像头视频传输

    Web Services具摄像头控制具体到技术交互实现上,其实和http差不多,客户端以类似http post的格式向服务端发送请求,然后服务端响应客户端请求。

    比如GetStatus请求长这样(POST的data部份就是soap格式):

    POST /onvif/device_service HTTP/1.1
    Host: 192.168.220.128
    Content-Type: application/soap+xml; charset=utf-8
    Content-Length: 333
    
    <?xml version="1.0" encoding="utf-8"?>
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
      <s:Body>
        <tptz:GetStatus>
          <tptz:ProfileToken>prof0</tptz:ProfileToken>
        </tptz:GetStatus>
      </s:Body>
    </s:Envelope>

    参考:https://blog.csdn.net/benkaoya/article/details/72453403

     

    1.2 位置说明

    这里直接盗用一张图,原文链接:https://wenku.baidu.com/view/a2ba36327fd5360cba1adb5a.html

    二、检测工具

    2.1 ONVIF Device Test Tool

    ONVIF Device Test Tool是官方发布的onvif检测工具,该工具只提供给ONVIF会员使用,官网不提供下载

    下载链接:http://www.happytimesoft.com/download.html(20190219更新:当前似乎该页面也已不提供下载)

    2.1.1 基本使用方法

    这里只讲检测报像头支持哪些请求,更具体的可参考:https://wenku.baidu.com/view/510b1105a58da0116d174906.html

    打开onvif device test tool之后:

    第一步,下接选择要用以收发探测数据包的网卡

    第二步,点击“Discover Devices”按钮检测局域网中的摄像头(本质是向发239.255.255.250:3702发送组播数据包,要求所有收到数据包的摄像头向本机3702端口进行回应)

    第三步,检测完成后左下方就会呈现摄像头列表,双击要检测的摄像头,其信息就会自动填到右上方的相应内容框中

    第四步,点击“Probe”探测选中主机是否真的支持onvif协议,如果没有弹框报错那就是支持的

    第五步,在username和password域中填入web管理员的用户名密码,然后点击右方的“check”检测用户名密码是否有误。如果没有错误右下方的几个框将会呈现摄像头的一些信息。该处用户名密码是要输入的,因为其他选项卡的请求(如果要用到)会自动从该处读取用户名密码发往服务端进行操作鉴权。

    切换到Debug选项卡

    第一步,将上面Discovery选项卡中,Device Service Address框的值复制到Debug选项卡的“Service Address”框中

    第二步,在左下方“Templates”中双出选择要进行检测的请求

    第三步,在左上方“Authentication”中选择权限验证方式(None为不发送用户名密码,WS-Username token是onvif标准的用户名密码验证方式,Digest是RTSP中的Digest形式,用户名密码就是从Discovery那里读过来的)

    第四步,点击“Send Request”发送数据包,如果没有问题在“Response”框中就会呈现返回结果

    (以上操作基于我使用该工具的目的是:确认摄像头支持onvif、获取onvif请求报文以构造畸形报文测试摄像头对报文处理是否有问题。)

    2.2 ONVIF Device Manager

    ONVIF Device Manager是一个第三方的onvif协议测试工具,具有以下功能

    下载链接:https://sourceforge.net/projects/onvifdm/?source=navbar

    2.2.1 基本使用方法

    onvif device manager的感觉可以认为是onvif device test tool的简化版,简化的意思一是功能少了一些,二是功能少了同时操作起来更简单明了。更具体使用可参考:https://wenku.baidu.com/view/3cb0bf1a3c1ec5da51e27002.html

    第一步,打开onvif device manager,左侧是当前检测到的支持onvif的设备,可点击“Refresh”按钮刷新列表。实际使用发现不管怎么刷新该工具总是很难发现全部设备,此时可使用“Add”按钮手动添加。

    第二步,双击自己要检测的设备,如果该设备真支持onvif那么在中部就会呈现支持的onvif操作。当前图中告警是因为用户名密码错误。

    第三步,如果设备要求用户名密码那就在左上方的name和password框中分别输入摄像头web端的用户名密码,然后点击“Log in”。注意这里不管输什么都会“登录成功”,但真正发包时只有正确的用户名密码才能完成请求,所以一定要输入正确的web端用户名密码。

     

    输入正确用户名密码后如下图,中部那些链接就是onvif device manager支持的操作,自己随便点即可。

  • 相关阅读:
    如何在SpringMVC项目中部署WebService服务并打包生成客户端
    Spring MVC前后端数据交互总结
    JAVA总结---序列化的三种方式
    jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore
    Jackson-deserialization fails on circular dependencies(JackSon无限递归问题)
    @JsonIgnore @JsonIdentityInfo 处理Hibernate 循环引用的问题
    hibernate中因双向依赖而造成的json怪相--springmvc项目
    jackson java转json hibernate懒加载造成的无限递归问题
    C/C++使用心得:enum与int的相互转换
    浅析长子继承制对英国社会的影响
  • 原文地址:https://www.cnblogs.com/lsdb/p/9157302.html
Copyright © 2011-2022 走看看