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

如何通过ONVIF Profile G获取设备的独立录像记录列表?

问题分析与解决方案

你的实现方式不正确,原因是GetMediaAttributes方法的设计目的并非枚举独立录像片段——它的作用是获取指定时间点对应的媒体流属性(如编码格式、分辨率等),而非返回所有分割的录像记录,所以返回合并后的单条结果是符合该接口预期的。

要获取设备上的每条独立录像记录,你需要使用ONVIF Profile G定义的SearchRecordings接口,该接口专门用于搜索并返回符合条件的录像片段列表。

大致实现步骤:

  • 构造_tse__SearchRecordings请求对象,设置必要参数:
    • 指定搜索的时间范围(如果需要全量搜索,可设置起始时间为0,结束时间为当前时间)
    • 设置IncludeRecordings为true,确保返回录像片段详情
    • 可根据需求添加过滤条件(如录像来源、类型等)
  • 调用SearchBindingProxy的SearchRecordings方法,获取_tse__SearchRecordingsResponse响应
  • 从响应的RecordingInformation列表中遍历每条独立录像记录

简化代码示例:

#include "soapSearchBindingProxy.h"
#include <ctime>

std::unique_ptr<SearchBindingProxy> deviceSearchBindingProxy = std::make_unique<SearchBindingProxy>();
_tse__SearchRecordings searchReq;
_tse__SearchRecordingsResponse searchResp;

// 设置搜索时间范围:从设备录像起始到当前时间
searchReq.StartTime = 0;
searchReq.EndTime = time(nullptr);
searchReq.IncludeRecordings = true;

// 调用搜索接口
if (deviceSearchBindingProxy->SearchRecordings(&searchReq, searchResp) == SOAP_OK) {
    // 遍历返回的每条独立录像记录
    for (auto& recordingInfo : searchResp.RecordingInformation) {
        // 处理录像信息:如StartTime、EndTime、RecordingToken、媒体轨道属性等
    }
}

注意:部分设备可能需要先通过GetRecordings接口获取所有可用的RecordingToken,再针对每个Token进行精准搜索,具体需参考设备的ONVIF实现文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:24:26