1. ONVIF服务编译与交叉编译实战指南
在嵌入式设备开发中,实现ONVIF协议支持是网络摄像头和视频监控设备的常见需求。本文将详细介绍如何在Linux环境下编译ONVIF服务组件onvif_srvd和wsdd,并针对RV1106芯片进行交叉编译的全过程。通过这篇指南,你将掌握从源码获取、环境配置到交叉编译的完整流程,以及在实际设备上的部署测试方法。
1.1 项目背景与工具介绍
ONVIF(Open Network Video Interface Forum)是一个全球开放的行业论坛,致力于推动网络视频设备之间的互操作性。onvif_srvd和wsdd是两个开源的ONVIF服务实现:
- onvif_srvd:实现ONVIF设备服务,包括设备管理、媒体流控制和PTZ控制等功能
- wsdd:实现ONVIF WS-Discovery服务,用于设备发现和网络探测
这两个组件通常需要配合使用,为嵌入式设备提供完整的ONVIF协议支持。在RV1106这类资源受限的嵌入式平台上,交叉编译是必不可少的步骤。
1.2 环境准备
在开始编译前,需要准备以下环境:
- 开发主机:Ubuntu 20.04 LTS(推荐)
- 工具链:
- Git:用于获取源码
- CMake(≥3.15):构建系统
- 交叉编译工具链:针对RV1106的arm-rockchip830-linux-uclibcgnueabihf
- 依赖库:
- gSOAP(2.8.139):ONVIF协议实现的基础库
- OpenSSL(可选):用于支持WS-Security
建议在开始前更新系统并安装基础工具:
bash复制sudo apt update
sudo apt install -y git cmake build-essential unzip
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 原生编译流程
2.1 获取源码
首先从GitHub获取onvif_srvd的源码:
bash复制git clone https://gitcode.com/gh_mirrors/onvif_srvd
cd onvif_srvd
2.2 解决gSOAP依赖问题
编译过程中最常见的障碍是gSOAP的自动下载失败。以下是手动解决方案:
- 从SourceForge下载gSOAP源码包(如gsoap_2.8.139.zip)
- 将zip文件放置在项目目录下的SDK文件夹中
- 修改CMakeLists.txt中的gSOAP版本号:
cmake复制set(GSOAP_VERSION 2.8.139) # 修改为实际下载的版本
- 修改build_gsoap.cmake文件,禁用
