Qt/C++编写onvif工具(搜索/云台/预置位/OSD/录像存储)
一、前言
从最初编写这个工具开始的时间算起来,至少5年多,一直持续完善到今天,这个工具看起来小也不小大也不大,但是也是经历过无数个现场的洗礼,毫不夸张的说,市面上能够遇到的主流的厂商的设备,都测试过,而且做过大量设备的测试,并不是调试个一个两个的,也并不是在实验室环境中搞开发的,而是在各种现场的复杂环境中成长起来的,无数个小细节的修改和调整,基本上都是第一时间现场反馈后,根据现场的复杂情况进行完善。整个根据大致经历过5个阶段:
- 雏形阶段,能够搜索设备,获取到设备的基本信息,取出rtsp码流地址。
- 增加视频参数、图片参数等,可以调整图片的明亮度、对比度、饱和度等。
- 增加云台和预置位相关,可上下左右调整云台,拉近拉远,增删改查和触发预置位。
- 增加OSD相关,增删改查OSD信息。
- 打开摄像头,实时预览监控画面,可保存录像文件,音视频同步存储到MP4文件。
二、效果图




三、体验地址
- 国内站点:https://gitee.com/feiyangqingyun
- 国际站点:https://github.com/feiyangqingyun
- 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
- 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_onvif。
四、功能特点
- 广播搜索设备,支持IPC和NVR,依次返回。
- 可选择不同的网卡IP进行对应网段设备的搜索。
- 依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。
- 可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。
- 可对每个设备设置Onvif用户信息,用于认证获取详细信息。
- 可实时预览摄像机图像。
- 支持云台控制,可上下左右调节云台,支持绝对移动、相对移动、连续移动三种方式,可对图像拉近拉远。
- 支持获取预置位集合、调用预置位、添加预置位、删除预置位等。
- 支持图片参数设置,包括亮度、对比度、饱和度、锐度等。
- 支持Qt4和Qt6任意Qt版本以及后续Qt版本,亲测Qt4.7到Qt6.5。
- 支持任意编译器,亲测mingw、msvc、gcc、clang。
- 支持任意操作系统,亲测xp、win7、win10、android、linux、嵌入式linux、树莓派全志H3等。
- 支持任意Onvif摄像机和NVR,亲测海康、大华、宇视、天地伟业、华为、海思芯片内核等,可定制开发。
- 支持对指定IP地址及onvif地址进行单播搜索,比如跨网段情况下非常有用。
- 支持指定过滤条件过滤搜索设备,比如只搜索某个网段的设备或者针对某个地址的设备。
- 支持搜索间隔和搜索策略设置,保证所有设备搜索回来,在大量设备现场很有用(亲测上千个摄像机现场,搜索回来的设备数量比摄像机厂家自带搜索工具还要准确)。
- 可对设备进行重启、网络参数获取等。
- 支持各种事件订阅(入侵报警、越界报警、遮挡报警等)、Onvif抓图等操作。
- 支持NTP校时和时间同步设置。
- 支持OSD相关操作,可以增删改查OSD信息。
- 内置了线程实时执行Onvif指令队列,排队最大速度的执行对应的指令,执行结果信号发出。
- 采用的最底层的TCP+UDP通信机制,原创最底层协议解析,纯QtWidget编写。
- 超级小巧轻量,总共约3000行代码,不依赖任何第三方的库和组件,跨平台。
- 封装好了通用的数据发送和接收解析的函数,可以非常方便的自行拓展其他Onvif处理。
- 工具上提供了收发数据文本框,显示收发的数据,方便查看和分析。
- 支持所有Onvif设备,代码工整,接口友好,直接引入pri即可使用。
Qt/C++编写onvif工具(搜索/云台/预置位/OSD/录像存储)的更多相关文章
- ONVIF客户端中预置位设置代码实现过程
simpleOnvif的功能:提供支持Windows.Linux.arm.Android.iOS等各种平台的SDK库,方便集成,二次开发 之前跟大家分享了我们安徽思蔷信息科技的simpleOnvif的 ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案中使用Onvif协议控制视频设备预置位转动
EasyNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位.预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便.之前我们说过如何用Onvif协议进行设备的发现, ...
- java 编写小工具 尝试 学习(七)
1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...
- 利用Eric+Qt Designer编写倒计时时钟
[前言]前几日通过编写命令行通讯录,掌握了Python的基本语法结构,于是开始向更高水平冲击,利用Eric与Qt Designer 编写一个带界面的小程序.本次实操中也确实遇到了不少问题,通过学习也都 ...
- Qt使用com组件的一点小心得(使用Qt自带的工具dumpcpp生成.h和.cpp文件)
这几天工作中要用到Qt调用com组件,主要用到的类型有dll和ocx,使用他们的方法很简单:1.将com组件注册到系统中.2.使用Qt自带的工具dumpcpp将com组件生成cpp和头文件.3.然后就 ...
- 编写TypeScript工具类型,你需要知道的知识
什么是工具类型 用 JavaScript 编写中大型程序是离不开 lodash 工具的,而用 TypeScript 编程同样离不开工具类型的帮助,工具类型就是类型版的 lodash .简单的来说,就是 ...
- (数据科学学习手札80)用Python编写小工具下载OSM路网数据
本文对应脚本已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们平时在数据可视化或空间数据分析的过程中经常会 ...
- paip.slap工具与于64位win7与JDBC的性能对比
paip.slap工具与于64位win7与JDBC的性能对比 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog ...
- Qt编写Onvif搜索及云台控制工具
一.前言 这个工具很早以前大概在2013年就想做了,后面杂七杂八的事情一再耽搁,记得当时最初用的是soap类来搜索和解析的,后面发现太大了,每次编译都要等好久,光源码文件加起来都快10MB了,而且函数 ...
- PHP语言编写的磁力搜索工具下载BT种子 支持transmission、qBittorrent
磁力搜索网站2020/01/12更新 https://www.cnblogs.com/cilisousuo/p/12099547.html PT种子.BT种子搜索功能 IYUU自动辅种工具,目前能对国 ...
随机推荐
- ajax下载二进制文件(导出Excel)
var url = 'http://127.0.0.1'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以使用PO ...
- 自学PHP笔记(二) PHP数据类型
本文转发来自:https://blog.csdn.net/KH_FC/article/details/115415323 PHP数据类型可支持以下8种类型: 类型 说明 string 字符串 bool ...
- 这个Linux你敢用吗?
文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统.所以不在root等高级管理权限下执行命令是很好的习惯. 早晚有一天 ...
- 我的博客网站为什么又回归Blazor了
引言 在博客网站的开发征程中,站长可谓是一路披荆斩棘.从最初的构思到实践,先后涉足了多种开发技术,包括 [MVC](ASP.NET Core MVC 概述 | Microsoft Learn).[Ra ...
- vue通过ollama接口调用开源模型
先展示下最终效果: 第一步:先安装ollama,并配置对应的开源大模型. 安装步骤可以查看上一篇博客: ollama搭建本地ai大模型并应用调用 第二步:需要注意两个配置,页面才可以调用 1)OLL ...
- Node.js 构建命令行工具:实现 ls 命令的 -a 和 -l 选项
在日常的前端开发中,我们常常借助各种基于 Node.js 的脚手架工具来加速项目搭建和维护,比如 create-react-app 可以一键初始化一个 React 项目,eslint 则帮助我们保持代 ...
- 定位模组LuatOS快速入门:源UART串口通信
合宙Air201资产定位模组--是一个集成超低功耗4G通信.语音通话.超低功耗定位.计步.震动.Type-C.充电.放音.录音等功能的超小PCBA. 内部集成高效.简单.可靠的LuatOS语言,旨在帮 ...
- 2.TP6的入门-分页类的改写
看了看推荐的分页类的使用,还是很简单的,可是自己去尝试改写生成的分页类结构就会很麻烦,总是不成功,后来发现手册里面还有这个 就说你想重写分页类,就需要这样做 赶紧实践了一下,先改这里的provider ...
- [python] Python异步编程库asyncio使用指北
Python的asyncio模块提供了基于协程(coroutines)的异步编程(asynchronous programming)模型.作为一种高效的编程范式,异步编程允许多个轻量级任务并发执行,且 ...
- Cmocka 单元测试配置与使用
0. 前言 在 Windows 环境下配置 Cmocka 单元测试,并使用该框架进行单元测试. 1. Cmocka介绍 Cmocka 是一个 C 单元测试框架,支持 mock objects(打桩). ...