跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI

libONVIF 开源 ONVIF 库解析与使用指南

libONVIF 是一款基于 ONVIF 标准的开源 C++ 库,旨在简化 gSOAP 的使用复杂性并提供高级类实现。该库支持跨平台开发(Android、Linux、Windows、macOS),涵盖设备管理、媒体服务、PTZ 控制等十一项核心 ONVIF 服务。采用 CMake 构建系统,提供线程安全设计和 RAII 资源管理。内置 OnvifDiscovery 和 OnvifPullPoint 辅助类,适用于视频监控系统开发、智能安防解决方案及远程监控应用,帮助开发者轻松接入不同厂商的 ONVIF 兼容设备。

奇形怪状发布于 2026/3/27更新于 2026/10/26104 浏览

libONVIF 开源 ONVIF 库解析与使用指南

libONVIF 是一款基于 ONVIF 标准的开源 C++ 库,旨在简化 gSOAP 的使用复杂性,并提供高级类实现与多种 ONVIF 服务的无缝对接。该库支持跨平台开发,包括 Android、Linux、Windows 和 macOS 等多种操作系统。

技术架构与设计理念

libONVIF 采用精心设计的架构,核心优势体现在以下几个方面:

  • 线程安全性:大部分代码在多线程环境下仍能保持良好的运行性能
  • gSOAP 封装:通过优雅的封装设计,开发者无需直接接触复杂的 gSOAP 底层实现
  • RAII 资源管理:使用 Request<> 和 Response<> 类管理 RPC 参数,确保内存自动释放
  • 全面的服务支持:涵盖 ONVIF 的十一项核心服务

支持的 ONVIF 服务

libONVIF 目前支持以下 ONVIF 标准服务:

  • 分析服务 (Analytics):http://www.onvif.org/ver20/analytics/wsdl
  • 设备管理 (Device):http://www.onvif.org/ver10/device/wsdl
  • 显示服务 (Display):http://www.onvif.org/ver10/display/wsdl
  • 事件处理 (Event):http://www.onvif.org/ver10/events/wsdl
  • 成像配置 (Imaging):http://www.onvif.org/ver20/imaging/wsdl
  • 媒体服务 (Media):http://www.onvif.org/ver10/media/wsdl
  • 媒体服务 v2 (Media2):http://www.onvif.org/ver20/media/wsdl
  • PTZ 控制 (PTZ):http://www.onvif.org/ver20/ptz/wsdl
  • 接收器服务 (Receiver):http://www.onvif.org/ver10/receiver/wsdl
  • 录制服务 (Recording):http://www.onvif.org/ver10/recording/wsdl
  • 回放服务 (Replay):http://www.onvif.org/ver10/replay/wsdl

安装与构建

libONVIF 使用 CMake 构建系统,支持多种构建方式:

使用 Conan 管理依赖
conan remote add tereius https://conan.privatehive.de/artifactory/api/conan/public-conan conan install ./ -s build_type=Release --build missing 
标准 CMake 构建
cd <build_dir> cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release <git_root_dir> cmake --build ./ sudo cmake --build ./ --target install 
Android 交叉编译
conan create ./ -pr:h ./buildProfiles/androidArmv8LinuxHost.profile -pr:b default --build missing 

核心组件与使用示例

libONVIF 提供了一系列客户端类,命名遵循 Onvif*Client 模式(*代表服务名称)。此外还包含两个重要辅助类:OnvifDiscovery 用于 WS 发现功能,OnvifPullPoint 用于 ONVIF 事件处理。

库中附带了一个名为 ovifinfo 的实用工具应用,可用于设备发现和信息查询:

#include "OnvifDiscoveryClient.h"
#include "OnvifDevice.h"
// 设备发现示例
auto discovery = new OnvifDiscoveryClient(QUrl("soap.udp://239.255.255.250:3702"), ctxBuilder.Build());
ProbeTypeRequest request;
request.Types = "tds:Device";
auto probeResponse = discovery->Probe(request, uuid);

应用场景

libONVIF 适用于多种 IP 安防应用场景:

  • 视频监控系统开发:轻松接入不同厂商的 ONVIF 兼容设备
  • 智能安防解决方案:结合 Analytics 服务实现人脸识别和行为分析
  • 远程监控应用:利用 Media 服务实现实时流媒体传输
  • 智能家居集成:在智能家居系统中集成视频监控功能

项目特点

  • 跨平台兼容性:支持主流操作系统平台
  • 服务全覆盖:满足多样化 ONVIF 服务需求
  • 易于使用:通过预定义客户端类简化 ONVIF 服务调用
  • 配套工具完善:提供 ovifinfo 等实用工具辅助开发

开发建议

对于初次接触 libONVIF 的开发者,建议:

  1. 首先阅读 ONVIF 程序员指南了解 ONVIF 标准基础
  2. 研究 ovifinfo 应用的源代码学习基本用法
  3. 参考 ONVIFMonitor 项目了解如何在 QML 应用中集成 libONVIF
  4. 充分利用库提供的 RAII 特性简化内存管理

libONVIF 通过其强大的功能和易用性,为开发者提供了在 ONVIF 标准世界中游刃有余的开发体验。无论是经验丰富的安防系统开发者,还是初涉该领域的新手,都能从这个开源库中受益。

目录

  1. libONVIF 开源 ONVIF 库解析与使用指南
  2. 技术架构与设计理念
  3. 支持的 ONVIF 服务
  4. 安装与构建
  5. 使用 Conan 管理依赖
  6. 标准 CMake 构建
  7. Android 交叉编译
  8. 核心组件与使用示例
  9. 应用场景
  10. 项目特点
  11. 开发建议

更多推荐文章

查看全部
  • Linux 开发:sudo 权限管理与 gcc/g++ 编译解析
  • 剑指 Offer 第 2 版:链表核心算法实战
  • 主流大模型架构全景 | GPT/LLaMA/DeepSeek/Qwen 深度对比
  • Spring 事务管理详解:@Transactional 注解与传播机制
  • Java 9 至 Java 25:语言演进与技术革新全解析
  • SBUS 协议原理与实战:从硬件接口到代码解析
  • Windows 环境下 Git 的安装与基础配置
  • Spring Boot 多级缓存架构设计与实现
  • Python 字典详解:核心概念、操作与常用方法
  • 开源智慧云智能教育平台:支持 Web、App 及小程序全端覆盖
  • Linux 系统 Git 原理与使用深入剖析 (上)
  • HTML 基础语法与结构详解
  • OpenClaw 个人 AI 助理跨平台安装与配置教程
  • YOLOv8 无人机道路病害识别的工程落地思路
  • MySQL 事务隔离级别与一致性详解
  • FPGA 是什么?核心原理与行业应用详解
  • 基于 Python Flask 的电影推荐与票房预测系统
  • MFDA-YOLO:面向无人机小目标检测的多尺度特征融合与动态对齐网络
  • MySQL 数据库核心操作:创建、修改、备份与连接排查
  • Python 文本转语音实现指南:使用 pyttsx3 库

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online