onvif协议之云台控制

onvif云台控制,还有有点麻烦的,主要是不知道参数如何填写,通过接近一天的摸索,终于有点名目了。

我使用的是ContinuousMove这个api,介绍如下,网址https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl

ContinuousMove
Description:Operation for continuous Pan/Tilt and Zoom movements. 
The operation is supported if the PTZNode supports at least one continuous Pan/Tilt or Zoom space. 
If the space argument is omitted, the default space set by the PTZConfiguration will be used.
SOAP action:http://www.onvif.org/ver20/ptz/wsdl/ContinuousMove
Input:
[ContinuousMove]ProfileToken [ReferenceToken]A reference to the MediaProfile.
Velocity [PTZSpeed]A Velocity vector specifying the velocity of pan, tilt and zoom.
PanTilt - optional;  [Vector2D]Pan and tilt speed. The x component corresponds to pan and the y component to tilt. If omitted in a request, the current (if any) PanTilt movement should not be affected. 
Zoom - optional;  [Vector1D]
A zoom speed. If omitted in a request, the current (if any) Zoom movement should not be affected.
Timeout - optional;  [duration]An optional Timeout parameter.
Output:
[ContinuousMoveResponse]

此API可以实现云台的上、下、左、右 以及拉近,拉远。

速度调整使用的是类Vector2D ,此类有两个参数,x 和y 范围都在0 ---1之间,x为负数,表示左转,x为正数,表示右转,

y为负数,表示下转,y为正数,表示上转。 通过x和y的组合,来实现云台的控制。

拉近和拉远通过Vector1D,此类有一个参数x  范围也在0--1之间 x为正数表示拉近,x为负数,表示拉远。

另外,x 和y的绝对值越接近1,表示云台的速度越快。

onvif预制位控制 使用的是GotoPreset函数,速度调整还是Vector2D类,和前面一样。预制位设置需要获取全部预制位信息,

具体实现如下

                PTZPreset[] presets = ptzClient.GetPresets(MmProfiles[0].token);
                if (presets.Length >= presetNumber)
                {
                    var presetToken = presets[presetNumber - 1].token;

                    ver20Ptz.PTZSpeed velocity = new ver20Ptz.PTZSpeed()
                    {
                        PanTilt = vector2D
                    };

                    ptzClient.GotoPreset(MmProfiles[0].token, presetToken, velocity);
                }

onvif的预置位的属性

 name代表预置位的名字,token代表预置位的序号。看如下截图就能明白他们之间的对应关系。

 

另外,为了方便大家学习,通过vs2017编写的demo如下链接。C#实现。

 

onvif协议之云台控制

 

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: Onvif协议是一种用于网络视频监控设备之间通信的协议,能够提供一种简单、标准化的接口,使得大多数监控设备之间容易实现互操作。Java onvif协议是利用Java语言开发的一个基于Onvif协议控制台的解决方案。 Java onvif协议可以帮助用户轻松地控制监控设备,特别是能够控制台。它基于Onvif协议,提供了丰富的SDK接口,并且支持多种编程语言,如Java、C++和C#等,使得开发者能够轻松地开发出功能强大的监控设备控制软件。 Java onvif协议控制台的工作原理是,首先需要获取台的控制权限,然后通过协议命令控制台的运动,例如:上下、左右转动、缩小放大等。同时,Java onvif协议还支持多种协议,例如:Pelco-D、Pelco-P、Dahua等,能够与各种不同型号的台进行适配。 在实际应用中,Java onvif协议控制台的优点在于其易于集成、稳定性高、兼容性强,且具有较强的可扩展性,可以在不同场景下广泛应用。例如,在安防领域,Java onvif协议控制台可以应用于视频监控、入侵报警、门禁等场景。在其他领域,例如:工业智能、交通管理等领域,Java onvif协议控制台也具有广泛的应用前景。 ### 回答2: ONVIF是基于IP的开放式网络视频接口标准,旨在促进不同厂商的网络视频设备互相兼容和交互。Java是一种广泛使用的编程语言,可用于开发各种类型的应用程序,包括网络视频控制应用。 在Java中,我们可以使用ONVIF协议控制台。这通常涉及使用ONVIF API和SOAP协议与网络摄像机通信。通过这些API和协议,我们可以执行各种操作,如控制台的方向和速度,设置预置位和运动轨迹等。 使用Java编写控制台的应用程序需要一定的编程知识和经验,尤其是在处理复杂的网络摄像机系统时。但是,一旦掌握了这些技能,您就可以轻松地编写能够高效地控制台的应用程序,尤其是在监控、安防等场景下。 综上所述,Java onvif协议控制台是一个具有挑战性和实用性的任务,需要正确的技能和工具,并且需要快速响应进行实时监测和恰当的调整。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值