昨天提了问题,找不到了,重新提问
onvif版本2.8.17 海康摄像头
代码如下:
void UserGetUri(struct soap *soap, char *token_name, tds_GetCapabilitiesResponse *capa_resp)
{
//获取指定通道的流媒体地址 rtsp://192.168.15.240:554/Streaming/Channels/2?transportmode=unicast
int result=0 ;
printf("\n\n---------------Getting Uri----------------\n");
_trt__GetStreamUri *trt__GetStreamUri = soap_new__trt__GetStreamUri(soap,-1);
_trt__GetStreamUriResponse *trt__GetStreamUriResponse = soap_new__trt__GetStreamUriResponse(soap,-1);
trt__GetStreamUri->StreamSetup = soap_new_tt__StreamSetup(soap,-1);
trt__GetStreamUri->StreamSetup->Stream = (tt__StreamType)0;//tt__StreamType__RTP_Unicast;
trt__GetStreamUri->StreamSetup->Transport = soap_new_tt__Transport(soap,-1);
trt__GetStreamUri->StreamSetup->Transport->Protocol =tt__TransportProtocol__RTSP;//(tt__TransportProtocol)0;// tt__TransportProtocol__UDP; //RTSP协议
trt__GetStreamUri->StreamSetup->Transport->Tunnel = 0;
trt__GetStreamUri->StreamSetup->__size = 1;
trt__GetStreamUri->StreamSetup->__any = NULL;
trt__GetStreamUri->StreamSetup->__anyAttribute =NULL;
trt__GetStreamUri->ProfileToken = token_name;
printf("channel token:%s\n",trt__GetStreamUri->ProfileToken);
printf("address:%s\n",capa_resp->Capabilities->Media->XAddr);
soap_wsse_add_UsernameTokenDigest(soap,"user", "admin", "qwer1234");
//http://100.100.100.248:80/onvif/device_service
//capa_resp->Capabilities->Media->XAddr
result = soap_call___trt__GetStreamUri(soap,capa_resp->Capabilities->Media->XAddr, NULL, trt__GetStreamUri, trt__GetStreamUriResponse);
if (soap->error)
{
printf("soap error: %d, %s, %s\n", soap->error, *soap_faultcode(soap), *soap_faultstring(soap));
result = soap->error;
return;
}
else
{
printf("!!!!NOTE: RTSP Addr Get Done is :%s \n",trt__GetStreamUriResponse->MediaUri->Uri);
}
}
soap_call___trt__GetStreamUri 函数返回2
用wireshark抓包,服务端发来的包信息为 env:sender the xml format error
希望大神帮忙!