Linux下onvif客户端获取h265 IPC摄像头的RTSP地址

1、 设备搜索,去获取****webserver 的地址 ,目的是在获取能力提供服务地址,demo:https://www.cnblogs.com/croxd/p/10683429.html

**2、 GetCapabilities获取能力,目的是在GetProfiles时提供媒体地址,demo:https://www.cnblogs.com/croxd/p/10683503.html
**

如果GetCapabilities获取能力失败,soap error 4 或者 52的话,可以参考:https://www.cnblogs.com/croxd/p/10684712.html

1char sercer_addr[] = "http://172.168.0.211/onvif/device_service";//设备搜索获取到的地址 2 struct SOAP_ENV__Header header; 3 struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, 5); 4 struct _tds__GetCapabilities *req; 5 struct _tds__GetCapabilitiesResponse *Response; 6 7 req->__sizeCategory = 1; 8 req->Category = (enum tt__CapabilityCategory *)soap_malloc(soap, sizeof(int)); 9 *(req->Category) = (enum tt__CapabilityCategory)5; //5表示:tt__CapabilityCategory__Media 10 11 ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权,输入摄像头的用户名、密码 12 ret = soap_call___tds__GetCapabilities(soap, sercer_addr, NULL,req, Response);

3 、GetServices获取多个媒体地址 demo:https://www.cnblogs.com/croxd/p/10683576.html

要是在获取GetProfiles时,用第二步的媒体地址不支持h265,那么你就需要调用这个接口。在这个接口的tds__GetServicesResponse结构体中可以获取两个媒体地址  。要是之前没有安装h265的gsoap环境,这边也是只能获取一个媒体地址,安装h265的环境请查看上一篇的文章 :Linux下onvi支持h265环境的的搭建 

1char secvre_addr[] = "http://172.168.0.211/onvif/device_service"; //设备搜索获取得到的服务地址 2 struct SOAP_ENV__Header header; 3 struct _tds__GetServices *tds__GetServices; 4 struct _tds__GetServicesResponse *tds__GetServicesResponse; 5 6 struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, 5); 7 8 tds__GetServices->IncludeCapability = 0; 9 10 ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权 11 soap_call___tds__GetServices(soap,secvre_addr,NULL, tds__GetServices, tds__GetServicesResponse);

4、GetProfiles 获取媒体信息文件 demo:https://www.cnblogs.com/croxd/p/10683598.html

从tr2__GetProfilesResponse结构体获取媒体信息文件,soap_call___tr2__GetProfiles接口是安装h265的环境时,gsoap框架所生成的接口。

1char media_addr2[] = "http://172.168.0.211/onvif/media2_service"; //GetServices得到的地址 2 struct SOAP_ENV__Header header; 3 struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, 5); 4 5 struct _tr2__GetProfiles tr2__GetProfiles; 6 struct _tr2__GetProfilesResponse tr2__GetProfilesResponse; 7 8 tr2__GetProfiles.__sizeType = 1; 9 tr2__GetProfiles.Token = NULL; 10 tr2__GetProfiles.Type = NULL; 11 ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权 12 soap_call___tr2__GetProfiles(soap, media_addr2, NULL, &tr2__GetProfiles, &tr2__GetProfilesResponse);

5、 GetStreamUri 获取RTSP地址 demo:https://www.cnblogs.com/croxd/p/10683616.html

从tr2__GetStreamUriResponse结构体中获取h265的RTSP地址,soap_call___tr2__GetStreamUri接口是安装h265的环境时,gsoap框架所生成的接口。

1char media_addr2[] = "http://172.168.0.211/onvif/media2_service"; //GetServices得到的地址 2 char taken[] = "Profile000"; //get_profiles获取 3 struct SOAP_ENV__Header header; 4 5 struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, 5); 6 struct _tr2__GetStreamUri tr2__GetStreamUri; 7 struct _tr2__GetStreamUriResponse tr2__GetStreamUriResponse; 8 tr2__GetStreamUri.Protocol = (char *)soap_malloc(soap, 128*sizeof(char));// 9 if (NULL == tr2__GetStreamUri.Protocol){ 10 printf("soap_malloc is error\n"); 11 ret = -1; 12 } 13 14 tr2__GetStreamUri.ProfileToken = (char *)soap_malloc(soap, 128*sizeof(char ));// 15 if (NULL == tr2__GetStreamUri.ProfileToken){ 16 printf("soap_malloc is error\n"); 17 ret = -1; 18 } 19 20 strcpy(tr2__GetStreamUri.Protocol, "tcp"); 21 strcpy(tr2__GetStreamUri.ProfileToken, taken); 22 ONVIF_SetAuthInfo(soap,"admin","123456"); //鉴权 23 soap_call___tr2__GetStreamUri(soap, media_addr2, NULL, &tr2__GetStreamUri, &tr2__GetStreamUriResponse);
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap