Onvif 网络摄像机服务发现

Onvif ip camera service discovery

我需要发现局域网中所有支持onvif协议的网络摄像头。我尝试使用 WSDiscoveryClient,但它没有发现 onvif 服务,尽管它发现了其他服务。它就像 onvif 不响应来自 WSDiscoveryClient 的探测。 Onvif 设备管理器可以进行发现,所以我知道可以这样做。有人知道怎么做吗?

此文档:http://www.onvif.org/Portals/0/documents/WhitePapers/ONVIF_WG-APG-Application_Programmer%27s_Guide.pdf

显示需要发送(通过 UDP 广播)以发现 ONVIF 设备的示例

<?xml version="1.0" encoding="UTF-8"?>
<e:Envelope xmlns:e="http://www.w3.org/2003/05/soap-envelope"
xmlns:w="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:dn="http://www.onvif.org/ver10/network/wsdl">
<e:Header>
<w:MessageID>uuid:84ede3de-7dec-11d0-c360-f01234567890</w:MessageID>
<w:To e:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</w:To>
<w:Action a:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</w:Action>
</e:Header>
<e:Body>
<d:Probe>
<d:Types>dn:NetworkVideoTransmitter</d:Types>
</d:Probe>
</e:Body>
</e:Envelope> 

这是一个非常好的 java 包装器,可以发现 OnVif 相机:

Network Discovery Library in Java