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 ...
随机推荐
- 润乾配置连接kingbase(金仓)数据库
问题背景 客户根据项目的不同,使用润乾连接的数据库类型各种各样,此文针对前几日使用润乾设计器连接kingbase金仓数据库做一个说明. kingbase金仓数据库是一款国产数据库,操作方式和配置 ...
- 180415_判断闰年的思路及三种 java 实现
世纪年:能整除 100 的年份 普通年:不能整除 100 的年份 闰年:一年有 366 天,二月有 29 天 平年:一年有 365 天,二月有 28 天 对于世纪年:能整除 400 为闰年,否则为平年 ...
- ReactNative应用<DCL每日查看>开发总结
App效果: 功能和交互简单描述: 针对微信使用用户每天的零碎时间来进行天气,新闻要点等查看,免去了打开其他App来查看; 针对每一天可以设置一项重要任务计划,可开启通知提醒,让每一天任务简化,免去太 ...
- Django 自定义分页
1.路由 urls.py url(r'^index2.html/', views.index2), 2.views.py def index2(request): # 数据总条数 当前页 每页显示条数 ...
- python实现字符串中的半全角转换
全角和半角的空格的Unicode值相差12256 除空格外的全角和半角的Unicode值相差65248 # -*- coding: utf-8 -*- def strQ2B(ustring): &qu ...
- select2加载远程数据示例
核心js $("#query_pack_code").select2({ language: "zh-CN", allowClear: true, width: ...
- LeetCode题解之Number of 1 Bits
1.题目描述 2.问题分析 使用C++ 标准库的 bitset 类,将整数转换为 二进制,然后将二进制表示转换为字符串,统计字符串中 1 的个数即可. 3.代码 int hammingWeight(u ...
- 将Excel的数据导入DataGridView中(转)
https://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html /// <summary> /// 点击按钮导入数据 // ...
- ASP.NET MVC下Bundle的使用
ASP.NET MVC中Bundle是用于打包捆绑资源的(一般是css和js),它是在全局文件Global.asax.cs中注册Bundle,而注册的具体实现默认是在App_Start文件夹的Bund ...
- 用UIControl封装Button
用UIControl封装Button 效果 说明 UIControl在处理超出触摸范围的触摸事件时有bug 源码 基础类 // // BaseControl.h // BaseControl // / ...