vb.net 中的 ONVIF GetSnapshotUri

Posted

技术标签:

【中文标题】vb.net 中的 ONVIF GetSnapshotUri【英文标题】:ONVIF GetSnapshotUri in vb.net 【发布时间】:2021-03-01 23:06:05 【问题描述】:

我正在编写一些涉及从工作中的相机下载 JPG 的软件。 我已经编写并运行了其余的软件,但是为了能够支持更多的相机,我想使用 ONVIF 来请求快照。 我能够在 Firefox 中使用 RESTClient 成功地做到这一点,但我不熟悉在 vb.net 中写出 SOAP 命令\响应

我发送相机的url(http://192.168.103.39/onvif/device_service)的2条POST命令的正文如下:

第一个获得 Profile Token:

<?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>

然后我获取该 Profile Token 并将其放入下一个我请求快照的命令中:

<?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"
xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:GetSnapshotUri >     
      <trt:ProfileToken>102c707f-19d0-4a6f-b519-cea65e98c1f2</trt:ProfileToken>
    </trt:GetSnapshotUri>
  </soap:Body>
</soap:Envelope>

这会返回:

<SOAP-ENV:Body>
    <trt:GetSnapshotUriResponse>
      <trt:MediaUri>
        <tt:Uri>http://192.168.103.39/stw-cgi/video.cgi?msubmenu=snapshot&amp;Profile=2&amp;action=view</tt:Uri>
        <tt:InvalidAfterConnect>false</tt:InvalidAfterConnect>
        <tt:InvalidAfterReboot>false</tt:InvalidAfterReboot>
        <tt:Timeout>PT0H0M0S</tt:Timeout>
      </trt:MediaUri>
    </trt:GetSnapshotUriResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

现在,如果我能够以编程方式在 vb.net(或 c#)中做同样的事情,那就太好了。我只是不知道该怎么做。

【问题讨论】:

【参考方案1】:

您的问题非常广泛,请尝试在此处寻找答案: https://github.com/alexgubanow/yaoc 我已经在那里实现了基本的 onvif 阅读,但基于它您了解如何根据您的需要对其进行修改。

【讨论】:

以上是关于vb.net 中的 ONVIF GetSnapshotUri的主要内容,如果未能解决你的问题,请参考以下文章

将 vb.net 类对象转换为 vb.net 中的 JSON 字符串

如何从 vb.net 中的 aspx.vb 页面调用 webmethod

vb.net:接口中的多重继承

VB.NET 中的引用

Vista 中的 VB6 .NET 互操作问题

在 vb.net 中的网站的 gridview 中显示表格