You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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
  • 克隆rapidonvif仓库到本地项目目录或系统库路径
  • VS Code配置:安装C/C++扩展,确保本地有可用编译器(GCC/Clang/MSVC)

二、VS Code项目配置

  1. 在项目根目录创建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)
  1. 配置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;
}

四、编译运行

  1. 在VS Code终端执行:
mkdir build && cd build
cmake ..
make
./ONVIFDemo
  1. Windows环境替换为:
mkdir build && cd build
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config Release
Release\ONVIFDemo.exe

内容的提问来源于stack exchange,提问作者Mohammad Moosavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:10:20