千家信息网

Qt Onvif信息获取方法是什么

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Qt Onvif信息获取方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt Onvif信息获取方法是什么"吧!一、前言o
千家信息网最后更新 2025年02月01日Qt Onvif信息获取方法是什么

这篇文章主要讲解了"Qt Onvif信息获取方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Qt Onvif信息获取方法是什么"吧!

一、前言

onvif设备信息的获取需要注意的是,现在市场上绝大部分的摄像机都有密码验证的限定,先不管他默认是admin还是12345,起码有用户验证的机制摆在那,这样相对来说安全很多,不然谁也可以通过onvif协议拿到对应的信息,就没有安全性可言,记得几年前海康爆出了漏洞,导致很多监控摄像头被泄露,为此海康现在的摄像头默认onvif是关闭的,开启以后密码要求各种组合,哎,想要更安全就必须牺牲便捷性,这个也不知道谁能想出一个完美兼顾的方法。

onvif主要的功能:

  1. 搜索设备,获取设备的信息比如厂家、型号等。

  2. 获取设备的多个配置文件信息profile。

  3. 获取对应配置文件的视频流地址rtsp,以及分辨率等参数。

  4. 云台控制,上下左右移动,焦距放大缩小,相对和绝对移动。

  5. 获取预置位信息,触发预置位。

  6. 订阅事件,接收设备的各种消息尤其是报警事件比如IO口的报警。

  7. 抓图,获取设备当前的图片。

  8. 获取、创建、删除用户信息。

  9. 获取和设备网络配置信息比如IP地址等。

  10. 获取和设置NTP时间同步以及设置设备时间。

  11. 获取和设置视频参数和图片参数(亮度、色彩、饱和度)。

  12. 重启设备。

onvif的处理流程:

  1. 绑定组播IP(239.255.255.250)和端口(3702),发送固定的xml格式的数据搜索设备。

  2. 接收到的xml格式的数据解析,得到设备的Onvif地址。

  3. 对Onvif地址发送对应的数据,收到数据取出对应的节点数据。

  4. 请求Onvif地址获取Media地址和Ptz地址,Media地址用来获取详细的配置文件,Ptz地址用来云台控制。

  5. ptz控制是对Ptz地址发送对应的数据即可。

  6. 设置了用户认证的需要组织用户token信息一块发送,每次都需要作鉴权处理。

  7. 接收到的数据不是标准的xml数据,没法按照正常的节点解析来处理,只能用QXmlQuery来做。

  8. 每个厂家设备返回的数据未必完全一致,基本上都不一致,需要进行模糊查找节点值。

  9. 特意采用底层协议解析,因为soap太臃肿函数名称太另类,特意做的轻量级的。

  10. 两个必备工具,Onvif Device Manager 和 Onvif Device Test Tool。

二、功能特点

  1. 广播搜索设备,支持IPC和NVR,依次返回,可选择不同的网卡IP。

  2. 依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。

  3. 可对指定的Profile获取视频流Rtsp地址,比如主码流子码流地址。

  4. 可对每个设备设置Onvif用户信息,用于认证获取详细信息。

  5. 可实时预览摄像机图像。

  6. 支持云台控制,可上下左右调节云台,支持绝对移动和相对移动,可放到和缩小图像远近。

  7. 支持Qt4和Qt5任意Qt版本,亲测Qt4.7.0到Qt5.14.2。

  8. 支持任意编译器,亲测mingw、msvc、gcc、clang。

  9. 支持任意操作系统,亲测xp、win7、win10、android、linux、嵌入式linux、树莓派全志H3等。

  10. 支持任意Onvif摄像机和NVR,亲测海康、大华、宇视、华为、海思芯片内核等,可定制开发。

  11. 支持对指定IP地址及onvif地址进行单播搜索,比如跨网段情况下非常有用。

  12. 支持指定过滤条件过滤搜索设备。

  13. 支持搜索间隔设置,保证所有设备搜索回来,在大量设备现场很有用。

  14. 可对图片参数(亮度、色彩度、饱和度)进行设置。

  15. 支持NTP校时和时间同步设置。

  16. 纯Qt编写,超级小巧轻量,总共约2000行代码,不依赖任何第三方的库和组件,跨平台。

  17. 封装好了通用的数据发送和接收解析的函数,可以非常方便的自行拓展其他Onvif处理。

  18. 工具上提供了收发数据文本框,显示收发的数据,方便查看和分析。

  19. 支持所有Onvif设备,代码工整,接口友好,直接引入pri即可使用。

三、效果图

四、核心代码

OnvifDevice::DeviceInfo *OnvifBase::getDeviceInfo(){    if (device->deviceUrl.isEmpty()) {        return 0;    }    QString file = device->request->getSendData("GetDeviceInformation");    QByteArray dataSend = file.toUtf8();    QNetworkReply *reply = device->request->auth(device->deviceUrl, dataSend);    emit sendData(dataSend, device->deviceUrl);    OnvifDevice::DeviceInfo *deviceInfo = 0;    QByteArray dataReceive;    bool ok = device->checkData(reply, dataReceive, "获取设备信息");    if (ok) {        OnvifQuery query;        query.setData(dataReceive);        QString wsdl = query.getDeviceWsdl();        QString name_path = QString("//%1:GetDeviceInformationResponse/%1:Manufacturer").arg(wsdl);        QString mod_path = QString("//%1:GetDeviceInformationResponse/%1:Model").arg(wsdl);        QString ver_path = QString("//%1:GetDeviceInformationResponse/%1:FirmwareVersion").arg(wsdl);        QString ser_path = QString("//%1:GetDeviceInformationResponse/%1:SerialNumber").arg(wsdl);        QString hard_path = QString("//%1:GetDeviceInformationResponse/%1:HardwareId").arg(wsdl);        //先将广播搜索到的设备信息一起打包        deviceInfo = new OnvifDevice::DeviceInfo;        deviceInfo->addr = device->deviceInfo.value("addr");        deviceInfo->ip = device->deviceInfo.value("ip");        deviceInfo->name = device->deviceInfo.value("name");        deviceInfo->location = device->deviceInfo.value("location");        deviceInfo->hardware = device->deviceInfo.value("hardware");        deviceInfo->manufacturer = query.getValue(name_path);        deviceInfo->model = query.getValue(mod_path);        deviceInfo->firmwareVersion = query.getValue(ver_path);        deviceInfo->serialNumber = query.getValue(ser_path);        deviceInfo->hardwareId = query.getValue(hard_path);    }    return deviceInfo;}
            %1            

感谢各位的阅读,以上就是"Qt Onvif信息获取方法是什么"的内容了,经过本文的学习后,相信大家对Qt Onvif信息获取方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

设备 地址 信息 数据 支持 搜索 方法 用户 摄像 云台 参数 文件 处理 控制 移动 配置 安全 代码 图片 摄像机 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重庆服务器磁盘阵列卡驱动云空间 免费下载网络安全检查 数据库临时表以时间换空间 山西网络安全服务 android外部数据库 服务器挂b站 浙江九旺网络技术有限公司 山东应用软件开发定做 课件站下载网络安全教育课件 数据库安全措施恢复和应急 大学国家网络安全宣传的意义 三级数据库技术大题讲解题 网络安全方案教程 其他电脑无法访问web服务器 神经网络技术的提出时间 佛山物联网软件开发电话 无锡节能软件开发销售厂 联想S服务器远程管理 信息网络安全防护报告 高密市诚讯网络技术 陕西中公软件开发专业好吗 计算机网络技术等级怎么分 数据库给别人交互怎么新建用户 长沙微信软件开发流程 数据库组织级别包括实体吗 客户端如何加载服务器mods 软件开发定制哪家有名 魔兽怀旧服服务器怎么赚钱 lol手游的服务器在哪个城市 数据库下载电影资源
0