soap - 通过 ONVIF 以编程方式访问海康威视摄像机时的 GetProfiles 问题
问题描述
问题:
我有许多用于开发 Cocoa ONVIF 驱动程序的测试摄像机。我有 AXIS、大华和海康威视(到目前为止,还会有更多)。
所有相机都声称符合 Profile S 和 Profile G。
AXIS 相机是唯一表现符合预期的相机。
如果我向他们发送直接 URI,大多数人都可以返回 RTSP 图像数据(我知道,这就是大多数“ONVIF”应用程序的工作方式)。
我想要做的是使用“适当的渠道”来访问这些设备。
这意味着运行 MANDATORY GetProfiles 查询,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:trt="http://www.onvif.org/ver10/media/wsdl">
<soap:Body>
<trt:GetProfiles/>
</soap:Body>
</soap:Envelope>
那是教科书。直接来自 ONVIF 应用程序编程指南。我正在使用 REST 注入应用程序来测试这个,使用 POST。我已使用完整的管理员用户将身份验证设置为基本。
问题在于,海康威视摄像机始终返回“未执行可选操作”故障,这是他们表示“我们不喜欢您发送的内容”的方式。
我应该注意到核心命令,如“GetServices”和“GetCapabilities”工作得很好。
ONVIF 上有宝贵的经验教训。我认为这是一个仍在努力独立站起来的标准。
我唯一看到的就是这个帖子。
这不适用于我。当我使用任一 WSDL 版本时,也会发生同样的问题。
当我 Wireshark 可以连接到相机的应用程序时,我看到的只是它们直接发送一个 RTSP URI。没有提到“GetProfiles”。
我的问题是这是其他人遇到过的问题吗?
如果是这样,它是如何解决的?我正在学习厌恶 ONVIF 规范,因为很难找到详细的数据包描述。
解决方案
您似乎将所有请求发布到同一个 URI。属于设备管理服务,而GetServices
属于媒体服务,它可能有不同的 URI(这是你必须用 验证的东西)。GetCapabilities
GetProfiles
GetServices
ONVIF 规范很丰富,建议从ONVIF 应用程序编程指南开始。它让您了解如何构建应用程序。
推荐阅读
- javascript - How do I close a React Native Modal?
- reactjs - Nextjs 路由与 activeClassName 和 Ant Design 菜单
- python - 如何判断 apply_async 函数是否已启动,或者它是否仍在使用 multiprocessing.Pool 的队列中
- reactjs - NextJs - Error exporting app that uses styled-components
- vbscript - WScript.Sleep 和 window.timeout 的替代方案
- c# - Xamarin.Forms 如何从 WCF 读取 json?
- tfs - TFS 性能很慢
- java - 通过命令行而不是使用 Maven 将 Java 项目编译成 Jar 文件
- elixir - Elixir 函数括号
- apache-kafka - Goldengate:表的定义文件的元数据格式与跟踪格式不匹配