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
char sercer_addr[] = "http://172.168.0.211/onvif/device_service";//设备搜索获取到的地址
struct SOAP_ENV__Header header;
struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, );
struct _tds__GetCapabilities *req;
struct _tds__GetCapabilitiesResponse *Response; req->__sizeCategory = ;
req->Category = (enum tt__CapabilityCategory *)soap_malloc(soap, sizeof(int));
*(req->Category) = (enum tt__CapabilityCategory); //5表示:tt__CapabilityCategory__Media ONVIF_SetAuthInfo(soap,"admin",""); //鉴权,输入摄像头的用户名、密码
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环境的的搭建
char secvre_addr[] = "http://172.168.0.211/onvif/device_service"; //设备搜索获取得到的服务地址
struct SOAP_ENV__Header header;
struct _tds__GetServices *tds__GetServices;
struct _tds__GetServicesResponse *tds__GetServicesResponse; struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, ); tds__GetServices->IncludeCapability = ; ONVIF_SetAuthInfo(soap,"admin",""); //鉴权
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框架所生成的接口。
char media_addr2[] = "http://172.168.0.211/onvif/media2_service"; //GetServices得到的地址
struct SOAP_ENV__Header header;
struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, ); struct _tr2__GetProfiles tr2__GetProfiles;
struct _tr2__GetProfilesResponse tr2__GetProfilesResponse; tr2__GetProfiles.__sizeType = ;
tr2__GetProfiles.Token = NULL;
tr2__GetProfiles.Type = NULL;
ONVIF_SetAuthInfo(soap,"admin",""); //鉴权
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框架所生成的接口。
char media_addr2[] = "http://172.168.0.211/onvif/media2_service"; //GetServices得到的地址
char taken[] = "Profile000"; //get_profiles获取
struct SOAP_ENV__Header header; struct soap* soap = ONVIF_Initsoap(&header, NULL, NULL, );
struct _tr2__GetStreamUri tr2__GetStreamUri;
struct _tr2__GetStreamUriResponse tr2__GetStreamUriResponse;
tr2__GetStreamUri.Protocol = (char *)soap_malloc(soap, *sizeof(char));//
if (NULL == tr2__GetStreamUri.Protocol){
printf("soap_malloc is error\n");
ret = -;
} tr2__GetStreamUri.ProfileToken = (char *)soap_malloc(soap, *sizeof(char ));//
if (NULL == tr2__GetStreamUri.ProfileToken){
printf("soap_malloc is error\n");
ret = -;
} strcpy(tr2__GetStreamUri.Protocol, "tcp");
strcpy(tr2__GetStreamUri.ProfileToken, taken);
ONVIF_SetAuthInfo(soap,"admin",""); //鉴权
soap_call___tr2__GetStreamUri(soap, media_addr2, NULL, &tr2__GetStreamUri, &tr2__GetStreamUriResponse);
Linux下onvif客户端获取h265 IPC摄像头的RTSP地址的更多相关文章
- Linux下onvif客户端获取ipc摄像头 GetServices:获取媒体地址(有的h265摄像头必须要这个接口)
GetServices:获取媒体地址(有些h265的摄像头必须用到这个接口,得到获取能力时没获取到的另一个媒体地址) 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部 ...
- Linux下onvif客户端获取ipc摄像头 GetStreamUri:rtsp地址(h264、h265)
GetStreamUri:rtsp地址 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致接口调用失败.实现鉴 ...
- Linux下onvif客户端获取ipc摄像头 GetProfiles:获取h265媒体信息文件
GetProfiles:获取媒体信息文件 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致接口调用失败.实现 ...
- Linux下onvif客户端获取ipc摄像头 获取能力:GetCapabilities
GetCapabilities:获取能力,主要目的获取设备能力信息(获取媒体服务地址) 鉴权:但是在调用获取设备能力之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需 ...
- Linux下onvif客户端关于ipc摄像头的搜索
设备搜索:要访问一个IPC摄像头,或者说要调用IPC摄像头提供的WEB服务接口,就要先知道其IP地址,这就是设备发现的过程,或者叫设备搜索的过程.IPC摄像头用的是239.255.255.250(端口 ...
- Linux下librdkafka客户端的编译运行
Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...
- Linux 下 简单客户端服务器通讯模型(TCP)
原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...
- Linux下用C获取当前时间
Linux下用C获取当前时间,具体如下: 代码(可以把clock_gettime换成time(NULL)) ? 1 2 3 4 5 6 7 8 9 10 void getNowTime() { ti ...
- linux下dmidecode命令获取硬件信息
linux下dmidecode命令获取硬件信息 2 A+ 所属分类:Linux 运维工具 dmidecode在 Linux 系统下获取有关硬件方面的信息.dmidecode 遵循 SMBIOS/DMI ...
随机推荐
- android中的textview显示汉字不能自动换行的一个解决办法
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_ ...
- Path2.0中绚丽的的旋转菜单
我们看一下实现的效果图: 在上图中,我将菜单弹出的效果设置成直线型,最终的弹出或汇总点在下面的红色按钮中. 它的实现原理是设置动画的同时并利用动画中的插入器(interpolator)来实现弹力.主要 ...
- linux centos7最小化安装桥接模式网络设置、xshell、xftf
一.网络连接设置1.桥接模式 使用电脑真实网卡,可以和自己的电脑连接,也可以和外部网络连接2.NAT模式 使用wmware network adapter vmnet8虚拟网卡,可以和自己的电脑连接, ...
- maven Could not find artifact com.** 无法下载原因分析
1.有时候经常莫名其妙的遇到这个问题:比如在idea重新导入一个新项目,或者在原来的空间里面引入一个新项目.去私服里面查看明明是有的,但是就是下载不下来. 结合网上搜的和自己遇到的,总结原因如下: 1 ...
- leetCode Detect Capital
1.问题描述 Given a word, you need to judge whether the usage of capitals in it is right or not. We defin ...
- 在 Azure VM 上安装 LEMP Web 服务器
本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 NGINX Web 服务器.MySQL 和 PHP(LEMP 堆栈). LEMP 堆栈可以替代常用的 LAMP 堆栈,可安装在 Azu ...
- Oracle EBS 报错:此责任无可用函数。 更改责任或与您的系统管理员联系。
解决:修改配置文件 1.FND: Diagnostics (FND:诊断) 启用设为”是” 2.Utilities:Diagnostics (公用程序 ...
- Entity Framework工具POCO Code First Generator的使用
在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...
- Oracle GoldenGate OGG管理员手册(较早资料)
第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle Goldengat 软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...
- Linux partprobe命令详解
partprobe命令 partprobe: 通知系统分区表的变化 常用的命令展示: 查看帮助 [root@localhost omc]# partprobe --help Usage: partpr ...