当前位置: 首页 > news >正文

ONVIF 设备debug: 设置onvif视频流配置的办法

1. 最简单的配置 onvif 设备 子配置 分辨率:

        参考链接1:        linux设备上的Onvif 实现14: 修改子通道的配置数据

        这个博客链接的示例代码基本正确.

        主要使用到函数如下:
 

// 输入用户名和用户名密码,获取权限
soap_wsse_add_UsernameTokenDigest    //两种服务media 和 media2 分别对应结构体 trt 和 tr2//media:http://www.onvif.org/ver10/media/wsdl
//所使用结构体:struct _trt__SetVideoEncoderConfiguration  ;struct _trt__SetVideoEncoderConfigurationResponse ;struct _trt__GetVideoEncoderConfiguration ;struct _trt__GetVideoEncoderConfigurationResponse ;
//修改当前onvif设备使用的视频配置
soap_call___trt__SetVideoEncoderConfiguration//获取当前onvif设备使用的视频配置
soap_call___trt__SetVideoEncoderConfiguration//media2:http://www.onvif.org/ver20/media/wsdl
//所使用结构体:struct _tr2__SetVideoEncoderConfiguration  ;struct tr2__SetConfigurationResponse ;struct tr2__GetConfiguration ;struct _tr2__GetVideoEncoderConfigurationsResponse ;//获取当前onvif设备使用的视频配置
soap_call___tr2__GetVideoEncoderConfigurations //获取当前onvif设备使用的视频配置
soap_call___tr2__SetVideoEncoderConfiguration

        

2. 修改更多 onvif设备 配置:

        参考链接2:        onvif 函数索引

        参考链接3:        mdiea媒体服务函数索引

       P.S:建议索引方法:在参考连接2获取到 所要的函数名, 在链接3 网页内按 ctrl+f 直接搜索该函数并跳转. onvif设备的函数命名都比较朴实, 获取参数的函数都是 "Get" + "所要获取参数信息英文简写" , 设置参数则是 "Set" + "所要设置参数 信息引文简写".

3.容易碰到的报错及其解决办法:
        主要会碰到报错error: 12, SOAP-ENV:Sender, the parameter value is illegal ,解决的最快方法是使用soap_print_fault函数打印出更多 错误原因. 其他错误也可以使用这个函数进行追踪.

           重点在于要分辨清楚, 设备支持 配置的媒体服务是哪种,media还是media2, 如果两种都支持,那么 要确定onvif摄像头具体通过哪个 media服务可以修改配置.海康的摄像头一般同时支持media和media2,但是事实上配置视频输出参数的时候只支持通过media2进行配置.

http://www.onvif.org/ver10/media/wsdl

http://www.onvif.org/ver20/media/wsdl
 

        

//1.第一种报错:非法参数,报错如下:
error: 12, SOAP-ENV:Sender, the parameter value is illegal//解决办法:添加如下错误打印函数,在终端将会具体打印出更多的错误原因.
soap_print_fault(soap, stderr);//例如:使用soap_print_fault后的报错格式如下:
SOAP 1.2 fault SOAP-ENV:Sender ["http://www.onvif.org/ver10/error":InvalidArgVal]
"the parameter value is illegal"
Detail: <env:Text>Quality is error!</env:Text>//发现是因为图像质量参数非法,那么直接设置为0.0f即可.
Configuration->Quality = 0.0f;//2. 第二种报错:仍然是非法参数,报错如下:
SOAP 1.2 fault SOAP-ENV:Sender ["http://www.onvif.org/ver10/error":InvalidArgVal]
"the parameter value is illegal"
Detail: <env:Text>no ipaddr type</env:Text>//解决办法分析:这种报错有两种可能原因,一种是因为struct tt__MulticastConfiguration *Multicast的ip地址非法, 第二种是 所使用的设备支持的媒体配置要使用media2而不是media//第一种解决办法:将多播地址设置为NULL,或者添加一个ip地址(这个方法大概了无效)
Configuration->Multicast = NULL;//第二种解决办法:使用media2的函数,使用media2Xaddr
result = soap_call___tr2__GetVideoEncoderConfigurations(soap, media2XAddr, NULL,&getReq, &getRep);
result = soap_call___tr2__SetVideoEncoderConfiguration(soap, media2XAddr, NULL, &setReq, &setRep);//第三种报错:服务使用错误
SOAP 1.2 fault SOAP-ENV:Receiver ["http://www.onvif.org/ver10/error":ActionNotSupported]
"Optional Action Not Implemented"
Detail: [no detail]//解决办法: 对于media使用了 media2XAddr 地址,改正即可
result = soap_call___trt__GetVideoEncoderConfiguration(soap,mediaXAddr, NULL,&getReq, &getRep);

http://www.dtcms.com/a/340138.html

相关文章:

  • 趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
  • 数据结构 -- 链表--单向链表的特点、操作函数
  • 【Git 子模块与动态路由映射技术分析文档】
  • 视觉测试:确保应用界面一致性
  • 数据结构 -- 单向链表的特点、操作函数
  • 使用segment-anything将目标检测label转换为语义分割label
  • 数据结构:二叉树oj练习
  • 实现进度条
  • 【大模型早期融合的非标记化架构】
  • 学习strandsagents的http_request tool
  • 【上升跟庄买入】副图/选股指标,动态黄色线由下向上穿越绿色基准线时,发出买入信号
  • Ubuntu 20 各种网卡配置IP的方法
  • 【PyTorch】多对象分割项目
  • 别再手动处理字符串!Python 正则表达式实战手册(入门到精通)
  • 【深度学习新浪潮】Meta 开源最新视觉大模型 DINOv3,该模型有哪些技术亮点?
  • 【数据结构】使用队列解决二叉树问题
  • CentOS安装SNMPWalk
  • C++高频知识点(二十二)
  • 算法题Day3
  • 理解MCP:开发者的新利器
  • 从零开始理解一个复杂的 C++/CUDA 项目 Makefile
  • React学习(六)
  • 梅森公式计算传递函数及结构图转换为信号流图过程
  • STM32-FreeRTOS快速入门指南(中)
  • HJ3 明明的随机数
  • 数据结构——双链表
  • 人工智能细分方向全景图:从入门到专精的技术路径
  • AI出题人给出的Java后端面经(十⑨)(日更)
  • 零成本上线个人网站 | Cloudflare Pages 全流程实战指南
  • A股大盘数据-20250819 分析