Onvif协议学习:14、球机云台控制PTZ


文章目录

  • Onvif协议学习:14、球机云台控制PTZ
    • 一、介绍
    • 二、代码实现
      • 八个方向、放下及缩小控制
      • 聚焦控制

原文链接:https://blog.csdn.net/u013566528/article/details/102079845

一、介绍

在安防摄像头中,不仅仅涉及到固定摄像头的枪击,同样还包含可以360°转动的球机。因此对球机的云台方向控制是Onvif协议开发过程中必不可少的过程

球机的云台控制主要包含:八个方向(上、下、左、右、左上、左下、右上、右下),聚焦、放大、缩小等,这在个过程中还包含对转动速度的控制或者放大缩小的速度控制。对应的方向及正负值如下图:

二、代码实现

八个方向、放下及缩小控制
struct soap *stSoapNew = soap_new();
if (stSoapNew == nullptr)
{return ;
}
soap_set_namespaces(stSoapNew, namespaces);                                 // 设置soap的namespaces
stSoapNew->recv_timeout = 5;                                                             // 设置超时5秒(超过指定时间没有数据就退出)
stSoapNew->send_timeout = 5;
stSoapNew->connect_timeout = 5;
soap_set_mode(stSoapNew, SOAP_C_UTFSTRING);                          // 设置为UTF-8编码,否则叠加中文        OSD会乱码
if (stSoapNew == nullptr)
{printf( "Onvif New Soap error!");            return;
}// 如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权
soap_wsse_add_UsernameTokenDigest(stSoapNew, NULL, pUserName, pPassWord);//对用户名密码进行加密struct _tptz__ContinuousMove stPtzMoveReq;
struct _tptz__ContinuousMoveResponse stPtzMoveRes;
memset(&stPtzMoveReq, 0x00, sizeof(stPtzMoveReq));
memset(&stPtzMoveRes, 0x00, sizeof(stPtzMoveRes));struct tt__PTZSpeed* stVelocity = soap_new_tt__PTZSpeed(stSoapInfo, -1);
switch (nControlType)
{case 0:     // 八个方向的控制
{struct tt__Vector2D* stPanTilt = soap_new_tt__Vector2D(stSoapInfo, -1);stPanTilt->x = 0.2;stPanTilt->y = 0.2;stPanTilt->space = "http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace";stVelocity->PanTilt = stPanTilt;break;
}
case 1:         // 放大(stZoom->x > 0)、缩小(stZoom->x < 0)
{struct tt__Vector1D* stZoom = soap_new_tt__Vector1D(stSoapInfo, -1);stZoom->x = 0.2;      stZoom->space = "http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace";stVelocity->Zoom = 0.2;break;
}
default:break;
}stPtzMoveReq.Velocity = stVelocity;
stPtzMoveReq.ProfileToken = pMainStreamToken;      // 前面获取到的媒体流的token
// pProfilesAddr 是soap_call___tds__GetCapabilities接口获取到的PTZ地址,具体实现参见:[获取设备能力](https://blog.csdn.net/u013566528/article/details/102070372)
nRet = soap_call___tptz__ContinuousMove(stSoapNew, pProfilesAddr, nullptr, &stPtzMoveReq, &stPtzMoveRes);
if (nRet != SOAP_OK || stSoapInfo->error != SOAP_OK)
{printf("Login handle is %d Gsoap return is %d labbuf is %s", (int)this, nRet, stSoapInfo->labbuf);return;
}
聚焦控制
struct soap *stSoapNew = soap_new();
if (stSoapNew == nullptr)
{return ;
}
soap_set_namespaces(stSoapNew, namespaces);                                 // 设置soap的namespaces
stSoapNew->recv_timeout = 5;                                                             // 设置超时5秒(超过指定时间没有数据就退出)
stSoapNew->send_timeout = 5;
stSoapNew->connect_timeout = 5;
soap_set_mode(stSoapNew, SOAP_C_UTFSTRING);                          // 设置为UTF-8编码,否则叠加中文        OSD会乱码
if (stSoapNew == nullptr)
{printf( "Onvif New Soap error!");            return;
}// 如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权
soap_wsse_add_UsernameTokenDigest(stSoapNew, NULL, pUserName, pPassWord);//对用户名密码进行加密struct _timg__Move stMoveReq;
struct _timg__MoveResponse stMoveRes;
memset(&stMoveReq, 0x00, sizeof(stMoveReq));
memset(&stMoveRes, 0x00, sizeof(stMoveRes));
tt__FocusMove *stFocusMove = soap_new_tt__FocusMove(stSoapNew, 1);
tt__ContinuousFocus *stContinuFocus = soap_new_tt__ContinuousFocus(stSoapNew, 1);
stContinuFocus->Speed = fSpeed;                 // 聚焦的速度
stFocusMove->Continuous = stContinuFocus;
stFocusMove->Absolute = nullptr;
stFocusMove->Relative = nullptr;
stMoveReq.Focus = stFocusMove;
stMoveReq.VideoSourceToken = VideoSourceConfigurationToken;        // 配置token
// pProfilesAddr 是soap_call___tds__GetCapabilities接口获取到的Ptz地址,具体实现参见:[获取设备能力](https://blog.csdn.net/u013566528/article/details/102070372)
nRet = soap_call___timg__Move(stSoapNew, pProfilesAddr, nullptr, &stMoveReq, &stMoveRes);
if (nRet != ONVIFSDK_NOERROR || stSoapNew->error != SOAP_OK)
{printf("Login handle is %d Gsoap return is %d labbuf is %s", (int)this, nRet, stSoapInfo->labbuf);return;
}

Onvif协议学习:14、球机云台控制PTZ相关推荐

  1. 结合实战,浅析GB/T28181(七)—— 球机云台控制

    1 简介说明 28181设备控制包括球机/云台控制.录像控制.报警布放/撤防及复位.设备配置等类型,本节主要介绍球机/云台控制流程.协议规定,及实战对接时碰到的常见问题和排查思路. 依据规范定义,球机 ...

  2. Android平台GB28181设备接入模块之球机/云台控制探究

    技术背景 好多开发者在做GB28181设备接入的时候,问云台控制是否可以处理(亦或拉取外部RTSP摄像头,通过命令中转的方式,控制摄像头),实际上云台控制命令相对来说还是比较好处理的.协议规范有明确说 ...

  3. ONVIF协议开发之网络摄像头云台控制(C版)

    在之前的文章中(<python-onvif实现客户端控制相机云台>),介绍过用python实现基于onvif协议的相机云台控制,考虑到嵌入式端的执行效率问题,还是需要实现C/C++版本的接 ...

  4. Onvif协议学习:4、门外汉理解Onvif协议

    Onvif协议学习:4.门外汉理解Onvif协议 文章目录 Onvif协议学习:4.门外汉理解Onvif协议 1.ONVIF背景 2.ONVIF技术框架 3.ONVIF技术规格 4.ONVIF接口规范 ...

  5. Onvif协议学习:1、Onvif与Onvif Profile协议基本概念

    Onvif协议学习:1.Onvif与Onvif Profile协议基本概念 文章目录 Onvif协议学习:1.Onvif与Onvif Profile协议基本概念 1.ONVIF 2.Onvif Pro ...

  6. Onvif协议学习:13、遮挡报警

    Onvif协议学习:13.遮挡报警 文章目录 Onvif协议学习:13.遮挡报警 1.原理简介 (1).Basic Notification (2).Pull-Point Notification 2 ...

  7. Onvif协议学习:7、鉴权认证

    Onvif协议学习:7.鉴权认证 文章目录 Onvif协议学习:7.鉴权认证 1.前言 2.ONVIF哪些接口需要认证 3.如何认证 4.安装OpenSSL 5.实现认证 6.特别注意 原文链接:ht ...

  8. Onvif协议学习:3、了解web services

    Onvif协议学习:3.了解web services 文章目录 Onvif协议学习:3.了解web services 1.远程调用 2.远程调用原理 3.Web Services的简单理解 4.Web ...

  9. Onvif协议客户端开发(8)--球机云台的控制

    球机的云台控制 一.介绍 在安防摄像头中,不仅仅涉及到固定摄像头的枪击,同样还包含可以360°转动的球机.因此对球机的云台方向控制是Onvif协议开发过程中必不可少的过程 球机的云台控制主要包含:八个 ...

最新文章

  1. 砥砺前行:我的2016总结和2017计划 | 掘金技术征文
  2. mysql zip 安装 启动_window的zip版mysql安装启动
  3. 初步理解Python进程的信号通讯
  4. mysql远程连接oracle数据库服务器配置_远程访问oracle数据库
  5. android6.0源码分析之Camera API2.0下的初始化流程分析
  6. 江翰网页防篡改系统解决方案--前言
  7. mysql 删除5天前 备份_mysql自动备份删除5天前的备份
  8. java mybatis狂神说sql_狂神说MyBatis01:第一个程序
  9. MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法
  10. 当当并购重组了,我们还有书读吗?
  11. 范伟导老师Sniffer课程资料
  12. bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)
  13. python,可变参数
  14. 如何利用Mac电脑制作让你脱颖而出的简历
  15. windows10与windows98虚拟机共享文件
  16. 浅谈测试小白到测试大牛的成长历程(分四个境界)
  17. Mac本配置adb环境,通过adb安装apk。
  18. UML10种图例之包图
  19. JAVA小功能手机短信发送
  20. 【组件】Vue组件之间的通信父传子 | 子传父

热门文章

  1. 分页插件中关于PageInfo
  2. springboot向word文档插入内容和图片
  3. payscale 美国计算机专业,2016PayScale美国大学排名:计算机专业
  4. 吐血分享:QQ群霸屏技术教程(利润篇)
  5. 这位创造Github冠军项目的老男人,堪称10倍程序员本尊
  6. Linux之恢复删除的数据
  7. html5的class属性值,HTML class 属性 | 菜鸟教程
  8. 给 perl hacker 们看的(ReShip)
  9. 《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现
  10. 深入浅出 Docker