如何在VS Code中使用rapidonvif库编写C++ ONVIF任务?
在VS Code中使用rapidonvif实现ONVIF基础任务(C++)
一、环境准备
- 安装依赖库:rapidonvif依赖OpenSSL、curl、libxml2,根据你的系统安装对应包:
- Ubuntu/Debian:
sudo apt install libssl-dev libcurl4-openssl-dev libxml2-dev - Windows:通过vcpkg安装
vcpkg install openssl curl libxml2
- Ubuntu/Debian:
- 克隆rapidonvif仓库到本地项目目录或系统库路径
- VS Code配置:安装C/C++扩展,确保本地有可用编译器(GCC/Clang/MSVC)
二、VS Code项目配置
- 在项目根目录创建
CMakeLists.txt,配置编译规则:
cmake_minimum_required(VERSION 3.10) project(ONVIFDemo) set(CMAKE_CXX_STANDARD 11) # 引入本地的rapidonvif库 add_subdirectory(rapidonvif) # 生成可执行文件 add_executable(ONVIFDemo main.cpp) # 链接依赖库 target_link_libraries(ONVIFDemo rapidonvif ssl crypto curl xml2)
- 配置VS Code的
c_cpp_properties.json(按Ctrl+Shift+P搜索"Edit Configurations (JSON)"),添加头文件路径:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/rapidonvif/include" ], "compilerPath": "/usr/bin/gcc", "cppStandard": "c++11", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
三、核心功能实现
1. 摄像头设备发现
在main.cpp中编写设备搜索代码:
#include <iostream> #include "rapidonvif/onvif_device_discovery.h" int main() { ONVIFDeviceDiscovery discover; // 搜索超时5秒,返回局域网内的ONVIF设备列表 auto devices = discover.Discover(5); std::cout << "发现设备数量:" << devices.size() << "\n"; for (const auto& dev : devices) { std::cout << "设备地址:" << dev.endpoint << "\n"; std::cout << "设备名称:" << dev.name << "\n"; std::cout << "设备型号:" << dev.model << "\n"; std::cout << "-------------------------\n"; } return 0; }
2. 获取视频流地址(RTSP)
基于发现的设备地址,获取可播放的RTSP流地址:
#include <iostream> #include "rapidonvif/onvif_media.h" int main() { // 替换为你的设备地址、用户名、密码 std::string device_url = "http://192.168.1.100/onvif/device_service"; std::string username = "admin"; std::string password = "123456"; ONVIFMedia media(device_url, username, password); auto profiles = media.GetProfiles(); if (profiles.empty()) { std::cout << "未找到媒体配置文件\n"; return -1; } // 获取第一个配置文件的RTSP流地址 auto stream_uri = media.GetStreamUri(profiles[0].token, "RTSP"); std::cout << "RTSP流地址:" << stream_uri << "\n"; // 可通过FFmpeg/OpenCV播放流,例如执行命令:ffplay "stream_uri" return 0; }
四、编译运行
- 在VS Code终端执行:
mkdir build && cd build cmake .. make ./ONVIFDemo
- Windows环境替换为:
mkdir build && cd build cmake .. -G "Visual Studio 17 2022" cmake --build . --config Release Release\ONVIFDemo.exe
内容的提问来源于stack exchange,提问作者Mohammad Moosavi
相关产品推荐
相关产品推荐

