开发onvif有一段时间了,这里把一些开发的东西和大家分享一下。
写这篇文章主要目的:
是帮助一些刚接触监控开发,或者想了解onvif开发的朋友。
具体如何开发,不打算在这篇文章中详细说,后面有时间会更新。
这里主要介绍一些概念,以及一些常见的问题及解决思路99。
主要是用gsoap工具生成整体的框架。然后基于这个框架进行开发。
onvif官网地址:https://www.onvif.org/
1,onvif是一个标准,基于这个标准,我们可以开发出一套管理监控设备的程序。
例如:获取设备属性,获取设备的视频流并显示等等
gsoap官网地址::http://www.cs.fsu.edu/~engelen/soap.html
1,gsoap是一个工具,是用来生成符合onvif标准框架的工具。
生成的框架基于soap协议,传输xml格式的消息。
开发中会碰到一些莫名的crash,这时候除了需要debug,
我们还可以打开gsoap的调试开关例如:
在make的时候加入-DDEBUG的参数。
这时在运行时会打印出RECV.LOG SENT.LOG TEST.LOG三个调试文件。
通过名字也知道他们是干啥的。
开发的测试工具:
有很多,我们主要可以使用odm(onvif device manager),相当于是做好的客户端(C#,F#),这玩意我也不知道
如何debug的,因为会薄一些莫名的错误,大概是版本不对或者某些配置吧。
还有一个是onvif test tool.
官网地址:http://www.lingodigit.com/onvif_nvc.html
python版本的接口测试工具:
https://pypi.org/project/onvif/
对于需要支持h265的:
只有实现media2才能支持h265,即将media2编译进gsoap框架.
/** Web service operation '__tr2__GetStreamUri' (returns SOAP_OK or error code) */
SOAP_FMAC5 int SOAP_FMAC6 __tr2__GetStreamUri(struct soap* soap, struct _tr2__GetStreamUri *tr2__GetStreamUri, struct _tr2__GetStreamUriResponse *tr2__GetStreamUriResponse){ONVIF_NOTSUPPORTED_FUNC(soap, NULL);}
对于odm需要支持https的:
经过测试发现odm支持部分可以支持,如果需要完全支持,可以手动实现client