ONVIF-rs 开源项目教程

ONVIF-rs 开源项目教程

onvif-rsA native Rust ONVIF client library.项目地址:https://gitcode.com/gh_mirrors/on/onvif-rs

项目介绍

ONVIF-rs 是一个用 Rust 编写的 ONVIF 客户端库,实现了 ONVIF 规范。ONVIF 是一个广泛应用于 IP 摄像机和其他视频监控设备的标准协议。该项目的主要特点包括:

  • 所有 ONVIF 类型和操作都是从官方模式生成的。
  • 操作是异步的,目前仅支持 tokio 运行时。
  • 支持本地网络上的设备发现(使用 WS-Discovery)。

项目快速启动

安装依赖

首先,确保你已经安装了 Rust 和 Cargo。然后,在 Cargo.toml 文件中添加以下依赖:

[dependencies]
onvif = { git = "https://github.com/lumeohq/onvif-rs" }

示例代码

以下是一个简单的示例,展示如何在本地网络上发现 ONVIF 设备并获取其 RTSP 流 URL:

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 发现本地网络上的所有 ONVIF 设备
    let mut devices = onvif_cam_rs::client::discover().await?;
    let mut cameras: Vec<onvif_cam_rs::device::camera::Camera> = Vec::new();

    // 枚举所有发现的摄像机设备
    for device in devices {
        let mut camera = onvif_cam_rs::device::camera::Camera::new(device);
        camera.build_all().await?;
        cameras.push(camera);
    }

    // 获取第一个摄像机的 RTSP 流 URL
    match &cameras[0].stream_uri {
        Some(url) => println!("Stream uri: {}", url),
        None => panic!("Ooops"),
    }

    Ok(())
}

应用案例和最佳实践

设备发现

ONVIF-rs 库支持通过 WS-Discovery 协议在本地网络上发现 ONVIF 设备。以下是一个简单的设备发现示例:

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let devices = onvif_cam_rs::client::discover().await?;
    for device in devices {
        println!("Found device: {:?}", device);
    }
    Ok(())
}

设备控制

你可以使用 ONVIF-rs 库来控制和查询 ONVIF 设备的各种功能,例如获取系统日期和时间、设置主机名等。以下是一个示例:

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let uri = "http://192.168.0.2:8000";
    let camera = onvif_cam_rs::device::camera::Camera::new(uri.to_string());
    let system_date_and_time = camera.get_system_date_and_time().await?;
    println!("System date and time: {:?}", system_date_and_time);
    Ok(())
}

典型生态项目

ONVIF-rs 可以与其他 Rust 项目结合使用,以构建更复杂的视频监控系统。以下是一些可能的生态项目:

  • 视频流处理:结合 FFmpeg 或其他视频处理库,对 ONVIF 设备捕获的视频流进行处理和分析。
  • 监控系统:构建一个完整的监控系统,包括设备管理、视频存储、报警处理等功能。
  • 自动化控制:将 ONVIF 设备集成到智能家居或工业自动化系统中,实现远程控制和监控。

通过这些生态项目的结合,可以构建出功能强大且灵活的视频监控解决方案。

onvif-rsA native Rust ONVIF client library.项目地址:https://gitcode.com/gh_mirrors/on/onvif-rs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司莹嫣Maude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值