..............................................h264通道....................................................
struct _trt__GetStreamUri trt__GetStreamUri;
struct _trt__GetStreamUriResponse response;
trt__GetStreamUri.StreamSetup = (struct tt__StreamSetup*)soap_malloc(soap, sizeof(struct tt__StreamSetup));
if (NULL == trt__GetStreamUri.StreamSetup){
printf("soap_malloc is error\n");
ret = -1;
}
trt__GetStreamUri.StreamSetup->Stream = tt__StreamType__RTP_Unicast;//stream type
trt__GetStreamUri.StreamSetup->Transport = (struct tt__Transport *)soap_malloc(soap, sizeof(struct tt__Transport));
if (NULL == trt__GetStreamUri.StreamSetup->Transport){
printf("soap_malloc is error\n");
ret = -1;
}
trt__GetStreamUri.StreamSetup->Transport->Protocol = 1;
trt__GetStreamUri.StreamSetup->Transport->Tunnel = 0;
trt__GetStreamUri.StreamSetup->__size = 1;
trt__GetStreamUri.StreamSetup->__any = NULL;
trt__GetStreamUri.StreamSetup->__anyAttribute = NULL;
trt__GetStreamUri.ProfileToken = (char *)soap_malloc(soap, 128*sizeof(char ));//
if (NULL == trt__GetStreamUri.ProfileToken){
printf("soap_malloc is error\n");
ret = -1;
}
strcpy(trt__GetStreamUri.ProfileToken, taken);
ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权
soap_call___trt__GetStreamUri(soap, media_addr, NULL, &trt__GetStreamUri, &response);
if(soap->error){
ret = -1;
printf("soap error: %d, %s, %s\n", soap->error, *soap_faultcode(soap), *soap_faultstring(soap));
return ret;
}else{
printf("rtsp_addr: %s\n", response.MediaUri->Uri);
}
//...............................................h264通道....................................................
/* //...............................................h265通道....................................................
struct _tr2__GetStreamUri tr2__GetStreamUri;
struct _tr2__GetStreamUriResponse tr2__GetStreamUriResponse;
tr2__GetStreamUri.Protocol = (char *)soap_malloc(soap, 128*sizeof(char));//
if (NULL == tr2__GetStreamUri.Protocol){
printf("soap_malloc is error\n");
ret = -1;
}
tr2__GetStreamUri.ProfileToken = (char *)soap_malloc(soap, 128*sizeof(char ));//
if (NULL == tr2__GetStreamUri.ProfileToken){
printf("soap_malloc is error\n");
ret = -1;
}
strcpy(tr2__GetStreamUri.Protocol, "tcp");
strcpy(tr2__GetStreamUri.ProfileToken, taken);
ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权
soap_call___tr2__GetStreamUri(soap, media_addr2, NULL, &tr2__GetStreamUri, &tr2__GetStreamUriResponse);
if(soap->error){
ret = -1;
printf("soap error: %d, %s, %s\n", soap->error, *soap_faultcode(soap), *soap_faultstring(soap));
return ret;
}else{
printf("rtsp_addr: %s\n", tr2__GetStreamUriResponse.Uri);
}*/
//...............................................h265通道....................................................
ONVIF_soap_delete(soap);
return ret;
}
ps:一般情况是如果一开始用的是_tr2(h265),那么获取信息的时候应该就会一直用tr2(h265)通道。但是有些摄像头比较奇葩,一开始走的都是_tr2,也就是h265的通道(如get_profiles),但是在获取onvif的uri(rtsp地址)的时候本该走_tr2(h265)通道,却走了_trt(h264)的通道才能获取 |