为什么我无法学习如何实施 ONVIF 标准?

Pab*_*avo 5 networking soap wsdl web-services network-programming

我买了一台网络摄像机。然后我发现它使用一个名为 ONVIF 的标准。我搜索了一下,发现这是一个很好的方法,可以将世界上所有的相机都以相同的方式实现。

当然,我已经阅读了 ONVIF 规范 PDF。我对其工作原理的理解如下:

有一个 WSDL 文件描述了如何访问相机(或其他东西)。例如,可以修改哪些设置、接受哪些方法等等。当我阅读此 WSDL 文件时,我将选择一个方法并发送一种称为 SOAP 的消息,该消息将是一个 XML,其中包含对 WSDL 文件上某些方法的响应。SOAP 是一种可以通过 HTTP 传输的 XML(因此它可以穿过防火墙),但也可以通过其他协议发送。

因此,据我了解,如果我想告诉我的相机开始流式传输视频,我只需要找到描述如何启动流式传输的 WSDL 方法,然后发送一条 SOAP 消息告诉它我需要开始视频流在某个端口通过某种协议进行流式传输。然后,我可以读取并解码该流。

通过了解我给出的这个简单示例,我可以做其他事情,例如控制相机等。我不知道 ONVIF 上的 PDF 是针对哪些公众的,但我对它的理解还不够,所以我无法探索我的相机。例如:我不知道如何接收这个WSDL文件。我在某处读到我应该访问http://ip_of_camera/onvif/device_service来获取该文件,然后我应该向它发送一条 SOAP 消息并观察响应。

我什至尝试通过wireshark分析数据包,但它们对我来说似乎毫无意义。这很困难,因为我什至无法让我的相机与 iSpy 软件一起使用。它只能在我的 Android 应用程序中完美运行(但没有音频或通话),因此我在我的树莓派上设置了代理,然后分析了数据包。

有人可以给我一个如何接收 WSDL 文件的基本示例,然后如何调用它的一种方法吗?我想看看它在网络级别如何工作,但我只能找到如何调用 C# 中准备好处理它的库。

例如:我想知道需要通过 TCP 或 TCP/HTTP 向摄像机发送什么内容,以及如何启动流。所有这些都在网络级别进行,根本不需要任何代码。

我只是想在这里学习,但这似乎不是一个真正的“开放”标准。如果您从未编写过类似的程序,则很难理解。所以我想这些 PDF 是为那些使用它的人准备的。我知道 TCP 和 UDP 是如何工作的,以及如何通过它们发送原始消息,所以这只是找到一个带有示例的好资源的问题,这样我就可以理解 ONVIF 的真正含义。

互联网就不能联合起来让事情变得更清楚吗?为什么没有关于它的帖子?

谢谢,很棒的社区<3