当前位置: 首页 > news >正文

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C++库。
先发现相机。

配置

lib目录
在这里插入图片描述包含
在这里插入图片描述在这里插入图片描述编译提示缺的文件,到libonvif里面拷贝过来。

在这里插入图片描述在这里插入图片描述在这里插入图片描述改UDP端口
在这里插入图片描述

代码

使用msvc 2022的向导生成空项目,从项目的main示例拷贝过来。

CameraOnvif.h

#pragma once#include <QObject>
#include <QUrl>#include "Response.h"
#include "SoapHelper.h"
#include "OnvifDevice.h"
#include "OnvifDiscovery.h"class CameraOnvif : public QObject
{QOBJECT_Hpublic:CameraOnvif(QObject* parent = nullptr);~CameraOnvif();QObject* _parent;};

CameraOnvif.cpp

#include "CameraOnvif.h"CameraOnvif::CameraOnvif(QObject* parent)
{_parent = parent;auto cb = SoapCtx::Builder();cb.SetSendTimeout(1000);cb.SetReceiveTimeout(2000);auto discovery = new OnvifDiscoveryClient(QUrl("soap.udp://239.255.255.250:3702"), cb.Build(), _parent);ProbeTypeRequest request;request.Types = (char*)"tds:Device";auto uuidOne = QString("uuid:%1").arg(SoapHelper::GenerateUuid());auto probeResponseTwo = discovery->Probe(request, uuidOne);request.Types = (char*)"tdn:NetworkVideoTransmitter";auto uuidTwo = QString("uuid:%1").arg(SoapHelper::GenerateUuid());auto probeResponseOne = discovery->Probe(request, uuidTwo);if (probeResponseOne && probeResponseTwo) {auto foundMatches = 0;auto matchResp = discovery->ReceiveProbeMatches();if (matchResp && matchResp.GetResultObject()) {auto relatesTo = matchResp.GetSoapHeaderRelatesTo();if (!relatesTo.isNull() && (uuidOne.compare(relatesTo) == 0 || uuidTwo.compare(relatesTo) == 0)) {if (auto matchs = matchResp.GetResultObject()) {if (matchs->wsdd__ProbeMatches) {for (auto i = 0; i < matchs->wsdd__ProbeMatches->__sizeProbeMatch; ++i) {wsdd__ProbeMatchesType match = matchs->wsdd__ProbeMatches[i];for (auto ii = 0; ii < match.__sizeProbeMatch; ++ii) {foundMatches++;auto probe = match.ProbeMatch[ii];qDebug() << "Found match:" << "    Type:" << probe.Types << " Endpoint:" << probe.XAddrs;if (probe.wsa5__EndpointReference.Address) {qDebug() << "     Reference:" << probe.wsa5__EndpointReference.Address;}if (probe.Scopes) {auto scopeList = QString::fromLocal8Bit(probe.Scopes->__item).split(' ');auto matchBy = QString::fromLocal8Bit(probe.Scopes->MatchBy);if (!matchBy.isEmpty()) {qDebug() << "    Match:" << matchBy;}qDebug() << "    Scope:";for (auto scope : scopeList) {if (!scope.isEmpty()) qDebug() << "        " << scope;}}}}}}}else {qDebug() << "Skipping non related message with id:" << relatesTo;}}}else {qCritical() << "nothing";}
}CameraOnvif::~CameraOnvif()
{
}

调用类。

#include "camera_onvif.h"camera_onvif::camera_onvif(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);auto camera = new CameraOnvif(this);
}camera_onvif::~camera_onvif()
{}

结果

Found match: Type: “http://www.onvif.org/ver10/network/wsdl”:NetworkVideoTransmitter tds:Device Endpoint: http://192.168.1.109/onvif/device_service
Reference: uuid:42164801-9662-9563-32ba-33e24ea19662
Scope:
“onvif://www.onvif.org/location/country/china”
“onvif://www.onvif.org/name/Dahua”
“onvif://www.onvif.org/hardware/DH-IPC-HFW3237M-I2”
“onvif://www.onvif.org/Profile/Streaming”
“onvif://www.onvif.org/type/Network_Video_Transmitter”
“onvif://www.onvif.org/extension/unique_identifier/0”
“onvif://www.onvif.org/Profile/T”

http://www.lryc.cn/news/524398.html

相关文章:

  • 【Java】常用工具类方法:树形结构、获取IP、对象拷贝、File相关、雪花算法等
  • 豆瓣电影Top250的数据采集与可视化分析(scrapy+mysql+matplotlib)
  • 2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)
  • PHP语言的数据库交互
  • flutter跨端UI框架简介
  • 自动化标注平台开源,基于 yolov8标注平台可本地部署
  • Walrus Learn to Earn计划正式启动!探索去中心化存储的无限可能
  • 第35天:安全开发-JavaEE应用原生反序列化重写方法链条分析触发类类加载
  • 【mptcp】ubuntu18.04和MT7981搭建mptcp测试环境操作说明
  • 【数据分析(二)】初探 Pandas
  • 第9章:Python TDD解决货币对象相等性比较难题
  • 更新布局元素的属性
  • UDP協議與代理IP介紹
  • QT 中 UDP 的使用
  • leetcode刷题记录(七十二)——146. LRU 缓存
  • 深圳大学-计算机系统(3)-实验一MIPS指令集实验
  • Java面试专题——面向对象
  • 知行合一:解决有心无力的问题,解决知易行难的问题,知行合一并不意味着事事都要合一,而是....
  • Qt中自定义信号与槽
  • .NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
  • 深入了解 Java split() 方法:分割字符串的利器
  • pgsql中处理数组类型字段
  • 如何正确定位前后端bug?
  • mfc操作json示例
  • 【技术总结类】2024,一场关于海量数据治理以及合理建模的系列写作
  • Dockerfile另一种使用普通用户启动的方式
  • python的pushbullet库在设备之间发送通知链接文件
  • STM32之FreeRTOS开发介绍(十九)
  • 用java配合redis 在springboot上实现令牌桶算法
  • DCGAN - 深度卷积生成对抗网络:基于卷积神经网络的GAN