通过 ONVIF 以编程方式访问海康威视摄像头时出现 GetProfiles 问题
GetProfiles Issue When Accessing Hikvision Cameras Programmatically Via ONVIF
问题:
我在开发 Cocoa ONVIF 驱动程序时使用了一些测试相机。我有安讯士、大华和海康威视(目前为止-还会有更多)。
所有相机都声称符合 Profile S 和 Profile G。
AXIS 摄像机是唯一表现符合预期的摄像机。
如果我向他们发送直接 URI,大多数 return RTSP 图像数据(据我所知,这似乎是大多数 "ONVIF" 应用程序的工作方式)。
我想做的是使用 "proper channels" 访问这些设备。
这意味着 运行 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。我已将身份验证设置为基本,使用完全管理员用户。
问题是海康威视摄像头一直return一个"Optional Action Not Implemented"故障,这是他们的说法"We don't like what you sent"。
我应该注意到核心命令,如 "GetServices" 和 "GetCapabilities" 工作得很好。
ONVIF 上几乎没有宝贵的经验教训。我认为这是一个仍在努力自立的标准。
我唯一看到的是this post。
这不适用于我。当我使用任一 WSDL 版本时都会发生同样的问题。
当我对可以连接到相机的应用程序进行 Wireshark 时,我看到的只是它们直接发送了一个 RTSP URI。没有提到 "GetProfiles".
我的问题是其他人遇到过这个问题吗?
如果有,是怎么解决的?我开始讨厌 ONVIF 规范,因为很难找到详细的数据包描述。
您似乎将所有请求都发布到同一个 URI。 GetServices
和 GetCapabilities
属于 Device management Service,而 GetProfiles
属于 Media Service,它可以有不同的 URI(这是你必须用 GetServices
验证的东西) .
ONVIF的规格比较丰富,建议从ONVIF Application Programming Guide开始。它让您了解如何构建您的应用程序。
问题:
我在开发 Cocoa ONVIF 驱动程序时使用了一些测试相机。我有安讯士、大华和海康威视(目前为止-还会有更多)。
所有相机都声称符合 Profile S 和 Profile G。
AXIS 摄像机是唯一表现符合预期的摄像机。
如果我向他们发送直接 URI,大多数 return RTSP 图像数据(据我所知,这似乎是大多数 "ONVIF" 应用程序的工作方式)。
我想做的是使用 "proper channels" 访问这些设备。
这意味着 运行 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。我已将身份验证设置为基本,使用完全管理员用户。
问题是海康威视摄像头一直return一个"Optional Action Not Implemented"故障,这是他们的说法"We don't like what you sent"。
我应该注意到核心命令,如 "GetServices" 和 "GetCapabilities" 工作得很好。
ONVIF 上几乎没有宝贵的经验教训。我认为这是一个仍在努力自立的标准。
我唯一看到的是this post。
这不适用于我。当我使用任一 WSDL 版本时都会发生同样的问题。
当我对可以连接到相机的应用程序进行 Wireshark 时,我看到的只是它们直接发送了一个 RTSP URI。没有提到 "GetProfiles".
我的问题是其他人遇到过这个问题吗?
如果有,是怎么解决的?我开始讨厌 ONVIF 规范,因为很难找到详细的数据包描述。
您似乎将所有请求都发布到同一个 URI。 GetServices
和 GetCapabilities
属于 Device management Service,而 GetProfiles
属于 Media Service,它可以有不同的 URI(这是你必须用 GetServices
验证的东西) .
ONVIF的规格比较丰富,建议从ONVIF Application Programming Guide开始。它让您了解如何构建您的应用程序。