【发布时间】:2020-02-13 15:30:57
【问题描述】:
我正在尝试使用 ONVIF 开发控制 IP 摄像机。但是我在连接 ONVIF 的 PTZ 服务器时遇到了一点问题。 这是我的代码:
private void PTZTest(DeviceClient client, double deviceTimeOffset, string ip, int port)
{
// Create Media object
string xaddr = string.Format("http://{0}/onvif/device_service", txtIP.Text);
MediaClient mediaService = OnvifServices.GetOnvifMediaClient(xaddr, deviceTimeOffset, txtUser.Text, txtPassword.Text);
// Create PTZ object
string xaddr2 = string.Format("http://{0}/onvif/ptz_service",txtIP.Text);
PTZClient ptzService = OnvifServices.GetOnvifPTZClient(xaddr2, deviceTimeOffset, txtUser.Text, txtPassword.Text);
// Get target profile
Profile[] mediaProfiles = mediaService.GetProfiles();
Profile mediaProfile = mediaService.GetProfile(mediaProfiles[0].token);
PTZConfigurationOptions ptzConfigurationOptions = ptzService.GetConfigurationOptions(mediaProfile.PTZConfiguration.token);
PTZ.PTZSpeed velocity = new PTZ.PTZSpeed();
velocity.Zoom = new PTZ.Vector1D() { x = speed * ptzConfigurationOptions.Spaces.ContinuousZoomVelocitySpace[0].XRange.Max };
当我在该行设置断点时
PTZConfigurationOptions ptzConfigurationOptions = ptzService.GetConfigurationOptions(mediaProfile.PTZConfiguration.token);我收到了这个错误信息:
没有监听端点 http://192.168.123.2/onvif/ptz_service 可以接受该消息。 这通常是由于 SOAP 地址或操作不正确造成的。如果存在, 有关详细信息,请参阅 InnerException 元素。
但我不明白为什么我可以获得 PTZ 服务列表和有关 mediaService 的所有信息,但我无法获得 ptzconfiguration 选项。
有谁知道到底是什么问题?请问我该如何解决!
【问题讨论】:
-
我需要从响应中查看状态码。使用像 wireshark 或 fiddler 这样的嗅探器来捕获请求和响应。如果您有一个工作应用程序,那么将第一个工作请求与非工作请求进行比较。然后使 c# 非工作请求看起来像工作请求。正常的故障状态代码是 400s 或 500s 错误。
标签: c# camera zooming pan onvif