Onvif工作整理总结(二)问题及解决汇总
Onvif问题及解决汇总
错误码
目前见过的错误码返回值为:-1,4,8,12,401,其实错误码的值并不重要,当我们发现有错误时,应该使用调试工具ONVIF Device test tool等去模拟发送和接收,并查看接收到的错误信息的打印,最为可靠;
- 在组播搜索设备、单播搜索设备等功能中,使用函数 :
soap_recv___wsdd__ProbeMatches(struct soap *soap, struct __wsdd__ProbeMatches *_param_1)
返回值 soap->error = -1;
解决方法:接收失败,多为IPC离线、网络问题、可以尝试查看设备是否在线,或者调大接收超时时间来调试。
- 获取设备能力(GetCapabilities)时,使用函数:
SOAP_FMAC5 int SOAP_FMAC6 soap_call___tds__GetCapabilities(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _tds__GetCapabilities *tds__GetCapabilities, struct _tds__GetCapabilitiesResponse *tds__GetCapabilitiesResponse)
返回值 soap->error = 8;
解决方法:遇到IPC无法识别的命名空间,不使用初始化头文件函数1,使用初始化头文件函数2(平时用函数1,当判断到return == 8,就调用函数2,再重新获取能力即可);
初始化头文件函数1:bool OnvifInitHeader(struct soap* pSoap)
struct SOAP_ENV__Header *header = NULL;
if(NULL == pSoap) return false;
header = (struct SOAP_ENV__Header *)OnvifSoapMalloc(pSoap, sizeof(struct SOAP_ENV__Header