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

Elixir通过Onvif协议控制IP摄像机,扩展ExOnvif的摄像头停止移动 Stop 功能

ExOnvif官方文档

在使用 Elixir 进行 IPdome 控制时,可以使用 ExOnvif 库。
ExOnvif官方文档中未给停止移动调用命令,自己按照onvif协议 Onvif协议 扩展的此项功能;

停止移动 Stop

在Onvif协议中,用于停止云台移动的操作为Stop。当需要终止云台正在进行的平移(Pan)、倾斜(Tilt)或变焦(Zoom)动作时,向设备发送一个Stop命令,这个命令会使得云台立即停止所有指定类型的运动。

请添加图片描述
在上面的Onvif协议中,可以看出,Stop命令需要三个参数;

  • ProfileToken字段用于指定要停止运动的PTZ的标识符文件。
  • PanTilt和Zoom元素是布尔值,用来指示是否停止平移/倾斜运动和变焦运动。如果设置为true,则相应类型的运动会被停止。如果为false,则不采取任何操作。

完整的文件:

defmodule MvOnvif.Action douse GenServer@moduledoc """自定义的Onvif的部分协议获取当前状态(exonvifabsolute move调用摄像头到指定位置,continuous move摄像头连续移动调用指定预置位停止运动"""import ExOnvif.Utils.XmlBuilderimport SweetXmlalias ExOnvif.Devicealias ExOnvif.Media2import ExOnvif.Utils.ApiClient, only: [ptz_request: 4]# 初始化设备defp get_device(uri) when not is_nil(uri) do%{host: host, userinfo: userinfo} =  URI.parse(uri)[user, pw] = String.split(userinfo, ":")Device.new("http://" <> host, user, pw);enddefp get_device(uri) do:errorend# 获取ProfileToken标识符defp get_main_stream_profile_token(device) doprofiles = Media2.get_profiles(device)case profiles do{:ok, list} -> {:ok, hd(list).reference_token}_ -> "something went wrong"endend# 生产Stop xml 命令,停止pt运动,停止zoom变焦defp mv_stop(device, profile_token) dobody = element("tptz:Stop", [element("tptz:ProfileToken", profile_token),element("tptz:PanTilt", true),element("tptz:Zoom", true)])ptz_request(device, "Stop", body, fn resp -> :ok end )end# 摄像头停止移动 外部调用def stop_(uri) dowith {:ok, device} <- get_device(uri),{:ok, profile_token} <- get_main_stream_profile_token(device)domv_stop(device, profile_token)endend
end
标准的Stop命令的xml文件
<SOAP-ENV:Body><wsdl:Stop><wsdl:ProfileToken>Profile_1</wsdl:ProfileToken><!-- 可选:停止所有运动或指定运动 --><wsdl:PanTilt>true</wsdl:PanTilt><wsdl:Zoom>true</wsdl:Zoom></wsdl:Stop>
</SOAP-ENV:Body>

文章转载自:

http://Pn98AwnR.ncfky.cn
http://THemAjDG.ncfky.cn
http://hgahZJXi.ncfky.cn
http://9gXKVkrk.ncfky.cn
http://S0XQEXmY.ncfky.cn
http://wpKFwQYF.ncfky.cn
http://URtJ2pKa.ncfky.cn
http://YbSON7xa.ncfky.cn
http://12IKN0Jq.ncfky.cn
http://WRZrZAG6.ncfky.cn
http://8YBZoa98.ncfky.cn
http://Vskaii7Z.ncfky.cn
http://tMKauLoI.ncfky.cn
http://4oMBsX3H.ncfky.cn
http://B8YAijhq.ncfky.cn
http://XM072HWQ.ncfky.cn
http://fBVrAA4A.ncfky.cn
http://xn0BTicR.ncfky.cn
http://J4cXCeMn.ncfky.cn
http://EQumj8D6.ncfky.cn
http://2AyRMTwN.ncfky.cn
http://AMCFqVJ8.ncfky.cn
http://tgb8tMbC.ncfky.cn
http://bcm0fmaC.ncfky.cn
http://1Yvx3kf6.ncfky.cn
http://VFIKHfXb.ncfky.cn
http://CIu0sdRP.ncfky.cn
http://IwLUqpyx.ncfky.cn
http://aXLkpllT.ncfky.cn
http://IyUpq2BC.ncfky.cn
http://www.dtcms.com/a/367196.html

相关文章:

  • 【RNN-LSTM-GRU】第五篇 序列模型实战指南:从选型到优化与前沿探索
  • 对于数据结构:链表的超详细保姆级解析
  • 从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
  • 2025年财会领域专业资格认证选择指南
  • AR眼镜在智能制造的应用方向和场景用例|阿法龙XR云平台
  • BERT家族进化史:从BERT到LLaMA,每一次飞跃都源于对“学习”的更深理解
  • 【深度学习】P1 引言:深度学习的万家灯火
  • 网络安全初级-渗透测试
  • 下载apache-maven-3.6.1版本并配置maven镜像及本地仓库[超简单]
  • Hunyuan-MT-7B模型介绍
  • 告别低效广告!亚马逊关键词筛选全流程攻略
  • matlab版本粒子群算法(PSO)在路径规划中的应用
  • ultralytics/nn/tasks.py源码学习笔记——核心函数parse_model
  • 【正整数的最优分解2的次方和形式非0次方】2022-11-1
  • Java基础知识点汇总(五)
  • 什么是压力测试,有哪些方法
  • AI入坑: Trae 通过http调用.net 开发的 mcp server
  • IIS服务器下做浏览器缓存
  • 小白学OpenCV系列3-图像算数运算
  • jQuery 入门:一份献给初学者的完全指南
  • 怎么做到这一点:让 Agent 可以像人类一样 边听边想、边说,而不是“等一句话 → 一次性返回”
  • 风险慎投!IF 狂跌10分,国人发文超80%,这本SCI的1区TOP还能撑多久?
  • 剧本杀APP系统开发:引领娱乐行业新潮流的科技力量
  • Linux2.6内核进程O(1)调度队列
  • 【OpenHarmony文件管理子系统】文件访问接口mod_fileio解析
  • 【全息投影】全息风扇的未来,超薄化、智能化与交互化
  • “SOD-923”封装系列ESD静电二极管 DC0521D9 ESD9X5.0S
  • 架构-亿级流量性能调优实践
  • 开讲了,全栈经验之谈系列:写给进阶中的小伙伴
  • STM32F103C8T6开发板入门学习——寄存器和库函数介绍