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&Profile=2&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 字符串