[置顶] 视频监控安防平台-国标28181SDK(2016版)、GB28181SDK(2016版) 和demo-提供c++库和测试demo
2017-12-06 18:23
495 查看
视频监控安防平台-国标28181SDK(2016版)、GB28181SDK(2016版) 和demo-提供c++库和测试demo
最近帮一朋友开发了一套国标28181-2016SDK,采用exosip协议栈来开发的支持GB28181-2016的最新协议,支持GB28181 IPC接入、DVR接入、NVR接入和GB28181下级平台设备同时接入功能,后面会提供28181SDK和demo的下载路径,运行环境是在centos7.3
64位linux服务器上面编译的C++库(lib28181sdk.so),需要demo的也可联系QQ:123011785。
支持的功能:
1、接收GB28181设备或者平台注册、注销功能,管理所有注册的28181设备或者平台。
2、接收GB28181设备或者平台心跳功能,心跳超时能将内存里面的管理设备或者平台下线回调事件功能。
3、对GB28181设备或者平台主动布防撤防功能。
4、获取GB28181设备或者平台的资源列表功能,并对获取的到设备列表进行管理,设备管理可以达到1000路以上。
5、对GB28181设备或者平台进行系统目录订阅,接收到消息根据事件回调出接口。
6、对GB28181设备或者平台进行实时视频点播开始和结束功能,并对每路设备实时视频码流状态进行管理,将码流回调出来,支持不少于100的多路并发功能。
7、对GB28181设备或者平台进行PTZ控制功能,支持向上、向下、向左、向右、放大、缩小、聚焦、预置位设置、预置位调用、预置位删除等功能。
8、对GB28181设备或者平台进行录像查询功能。
9、对GB28181设备或者平台进行历史视频点播开始和结束功能,并对每路设备实时视频码流状态进行管理,将码流回调到上层接口。
10、对GB28181设备或者平台进行历史视频进行下载功能,并对每路设备实时视频码流状态进行管理,将码流回调到上层接口。
11、对GB28181设备或者平台进行历史视频点播控制功能,支持播放、暂停、快放、慢放和随机拖放等功能,如果平台支持倒放功能可以协商协议进行倒放功能。
12、对GB28181设备或者平台上线、下线进行事件回调功能。
以上功能是最基础的GB28181功能点也是最常用的功能,也可以根据需求定制化开发GB28181其他功能(解码器上墙、语音广播对讲、设备移动位置订阅、主码流和子码流协议、锁和解锁协议规范、点播控制协议(单帧向前后向前向后播放)、画面分割器协议、键盘切换轮训计划协议、解码器控制通知协议、字符叠加协议等各种功能),支持非标准GB28181设备的接入,后面可以根据不同码流格式进行转码,支持H265、H264、MPEG4、MPEG2等格式转码,支持各种分辨率的转码功能,支持码流压缩倍率在10:1比例,支持码流PS流、ES流、TS流等码流的各种转换。
目前只有linux版本的GB28181SDK和demo,后面会提供windos版本的GB28181SDK和demo。欢迎大家试用:
提供接口以代码形式呈现:
头文件28181SDK.h:
运行的demo程序testmain.cpp粘贴
编译:
g++ testmain.cpp -L./ -l28181sdk -lpthread -Wl,-Bdynamic -lgcc_s -lrt -luuid -rdynamic -o test.out
lib28181sdk.so库和demo文件下载地址: http://download.csdn.net/download/songxiao1988918/10148473
最近帮一朋友开发了一套国标28181-2016SDK,采用exosip协议栈来开发的支持GB28181-2016的最新协议,支持GB28181 IPC接入、DVR接入、NVR接入和GB28181下级平台设备同时接入功能,后面会提供28181SDK和demo的下载路径,运行环境是在centos7.3
64位linux服务器上面编译的C++库(lib28181sdk.so),需要demo的也可联系QQ:123011785。
支持的功能:
1、接收GB28181设备或者平台注册、注销功能,管理所有注册的28181设备或者平台。
2、接收GB28181设备或者平台心跳功能,心跳超时能将内存里面的管理设备或者平台下线回调事件功能。
3、对GB28181设备或者平台主动布防撤防功能。
4、获取GB28181设备或者平台的资源列表功能,并对获取的到设备列表进行管理,设备管理可以达到1000路以上。
5、对GB28181设备或者平台进行系统目录订阅,接收到消息根据事件回调出接口。
6、对GB28181设备或者平台进行实时视频点播开始和结束功能,并对每路设备实时视频码流状态进行管理,将码流回调出来,支持不少于100的多路并发功能。
7、对GB28181设备或者平台进行PTZ控制功能,支持向上、向下、向左、向右、放大、缩小、聚焦、预置位设置、预置位调用、预置位删除等功能。
8、对GB28181设备或者平台进行录像查询功能。
9、对GB28181设备或者平台进行历史视频点播开始和结束功能,并对每路设备实时视频码流状态进行管理,将码流回调到上层接口。
10、对GB28181设备或者平台进行历史视频进行下载功能,并对每路设备实时视频码流状态进行管理,将码流回调到上层接口。
11、对GB28181设备或者平台进行历史视频点播控制功能,支持播放、暂停、快放、慢放和随机拖放等功能,如果平台支持倒放功能可以协商协议进行倒放功能。
12、对GB28181设备或者平台上线、下线进行事件回调功能。
以上功能是最基础的GB28181功能点也是最常用的功能,也可以根据需求定制化开发GB28181其他功能(解码器上墙、语音广播对讲、设备移动位置订阅、主码流和子码流协议、锁和解锁协议规范、点播控制协议(单帧向前后向前向后播放)、画面分割器协议、键盘切换轮训计划协议、解码器控制通知协议、字符叠加协议等各种功能),支持非标准GB28181设备的接入,后面可以根据不同码流格式进行转码,支持H265、H264、MPEG4、MPEG2等格式转码,支持各种分辨率的转码功能,支持码流压缩倍率在10:1比例,支持码流PS流、ES流、TS流等码流的各种转换。
目前只有linux版本的GB28181SDK和demo,后面会提供windos版本的GB28181SDK和demo。欢迎大家试用:
提供接口以代码形式呈现:
头文件28181SDK.h:
/****************************************************************************** * FILE: 28181SDK.h * Description: * Interface class of communicating between service agent and DB connector. * * Modified Code History * Mark Date By Modification Reason ******************************************************************************* * 01 2017-10-4 songxw Initial creation. ******************************************************************************/ #if !defined(__28181_NETSDK_H__) #define __28181_NETSDK_H__ using namespace std; #if 0 //----------------------------------------------------------- //PTZ控制 #define PTZ_OPT_UP 1 // 方向 #define PTZ_OPT_UP_STOP 2 // #define PTZ_OPT_DOWN 3 // #define PTZ_OPT_DOWN_STOP 4 // #define PTZ_OPT_LEFT 5 // #define PTZ_OPT_LEFT_STOP 6 // #define PTZ_OPT_RIGHT 7 // #define PTZ_OPT_RIGHT_STOP 8 // #define PTZ_OPT_UR 9 // #define PTZ_OPT_UR_STOP 10 // #define PTZ_OPT_UL 11 // #define PTZ_OPT_UL_STOP 12 // #define PTZ_OPT_DR 13 // #define PTZ_OPT_DR_STOP 14 // #define PTZ_OPT_DL 15 // #define PTZ_OPT_DL_STOP 16 // #define PTZ_OPT_ZOOMIN 17 // 缩放 #define PTZ_OPT_ZOOMIN_STOP 18 // #define PTZ_OPT_ZOOMOUT 19 // #define PTZ_OPT_ZOOMOUT_STOP 20 // #define PTZ_OPT_FOCUSNEAR 21 // 焦距 #define PTZ_OPT_FOCUSNEAR_STOP 22 // #define PTZ_OPT_FOCUSFAR 23 // #define PTZ_OPT_FOCUSFAR_STOP 24 // #define PTZ_OPT_POS_SET 25 // 预置位 #define PTZ_OPT_POS_CLEAR 26 // #define PTZ_OPT_POS_CALL 27 // 调用预置位 //点播控制类型 #define HIS_VIDEO_CTRL_PLAY 1 //点播播放控制 #define HIS_VIDEO_CTRL_FAST 2 //点播快放控制 #define HIS_VIDEO_CTRL_SLOW 3 //点播慢放控制 #define HIS_VIDEO_CTRL_PAUSE 4 //点播暂停控制 #define HIS_VIDEO_CTRL_JUMP 5 //点播跳转控制 //------------------------------------------------------------- //事件回调类型 typedef enum { EVENT_REGISTER_STATUS = 1, //注册回调 (下级平台或则设备注册和注销) EVENT_DEVICE_CATALOG = 2, //设备目录 (下级平台或则设备推送完资源目录之后回调xml格式) EVENT_DEVICE_ALARM = 3, //设备报警 (下级平台或则设备推送的报警消息) EVENT_HISVIDEO_STOP_NOTIFY = 4, //历史视频通知 (点播或则下载结束之后通知类型) }EventCallBackType_E; #endif typedef void (*EventCallbackDefine)(int eventtype, int eventparam, int datalen, char *data); typedef void (*StreamCallbackDefine)(long handle, int datatype, int datalen, unsigned char *data, long userdata); #ifdef __cplusplus extern "C"{ #endif //初始化 int C_InitSDK(char *svrip, int listenport, char *svrpubid, char *username, char *password, EventCallbackDefine eventcallback); //反初始化 int C_UnInitSDK(void); //向设备获取资源列表;异步返回 //pubid为空,获取所有;或者为某个下级pubid,只获取该下级id的资源 int C_GetResource(char *pubid); //获取本地已存在的资源列表;主动返回 //pubid为空,获取所有;为某个下级获取该下级所有资源;为某个通道获取该通道信息 const char *C_GetLocalResource(char *pubid); //实时视频开始 long C_RealVideoStart(char *chanpubid, StreamCallbackDefine realcallback, long userdata); //实时视频结束 int C_RealVideoStop(long realhandle); //设备控制 int C_Ptz(char *chanpubid, int ptztype, int ptzparam); //历史视频查询,异步返回 const char *C_HisVideoQuery(char *chanpubid, char *begintime, char *endtime); //历史视频开始 long C_HisVideoStart(char *chanpubid, char *begintime, char *endtime, StreamCallbackDefine hiscallback, long userdata, int download); //历史视频结束 int C_HisVideoStop(long hishandle); //历史视频控制 int C_HisVideoCtrl(long hishandle, int ctrltype, long ctrlparam); #ifdef __cplusplus } #endif #endif //__SOAP_CLIENT_EVT_PROC_H__
运行的demo程序testmain.cpp粘贴
#include <stdio.h> #include <sys/time.h> #include <sys/resource.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/wait.h> #include <unistd.h> #include <signal.h> #include <stdlib.h> #include <time.h> #include "28181SDK.h" static bool bGetLoaclRes = false; //打印事件回调信息 void enventcallback(int eventtype, int eventparam, int datalen, char *data) { printf("eventtype:%d, eventparam:%d, datalen:%d, data:%s\n", eventtype, eventparam, datalen, data); if (eventtype == 2) { bGetLoaclRes = true; } else if (eventtype == 1 && eventparam == 1) { C_GetResource(NULL); } } //打印码流回调信息 void streamcallback(long handle, int datatype, int datalen, unsigned char *data, long userdata) { printf("handle:%ld, datatype:%d, datalen:%d, userdata:%ld\n", handle, datatype, datalen, userdata); } int main() { int iRet = -1; //初始化设置 SIP服务器的IP、端口、地址编码(必须为200平台类型)、用户名、密码、事件回调函数 iRet = C_InitSDK((char *)"192.168.1.230", 5061, (char *)"11000000002000000001", (char *)"11000000002000000001", (char *)"12345678a", enventcallback); printf("1.InitSDK return :%d\n", iRet); //等待资源推送 while (true) { if (bGetLoaclRes) break; sleep(1); } sleep(5); //获取已经推送的所有资源 printf("1.GetLocalResource Body:%s\n", C_GetLocalResource(NULL)); sleep(10); //开始实时视频1 ID需要自己根据推送获取 long lrealhandle1 = C_RealVideoStart((char *)"11010000001310000001", streamcallback, 1024); printf("RealVideoStart lrealhandle:%d\n", lrealhandle1); //开始实时视频2 ID需要自己根据推送获取 long lrealhandle2 = C_RealVideoStart((char *)"11010000001310000002", streamcallback, 1024); printf("RealVideoStart lrealhandle:%d\n", lrealhandle2); sleep(5); //停止实时视频1 if (lrealhandle1 > 0) C_RealVideoStop(lrealhandle1); //停止实时视频2 if (lrealhandle2 > 0) C_RealVideoStop(lrealhandle2); sleep(1); //PTZ控制 C_Ptz((char *)"11010000001310000002", 1, 100); sleep(1); //PTZ控制结束 C_Ptz((char *)"11010000001310000002", 2, 0); sleep(5); //查询历史视频 printf("2.C_HisVideoQuery Body:%s\n", C_HisVideoQuery((char *)"11010000001310000002", (char *)"2017-12-06T09:26:00", (char *)"2017-12-06T09:50:00")); sleep(5); //点播历史视频 long hishandle1 = C_HisVideoStart((char *)"11010000001310000002", (char *)"2017-12-06T09:26:00", (char *)"2017-12-06T09:50:00", streamcallback, 2048, 0); printf("C_HisVideoStart hishandle1:%d\n", hishandle1); sleep(5); if (hishandle1 > 0) { //点播控制 // 1.点播慢放控制 C_HisVideoCtrl(hishandle1, 3, 2); sleep(5); // 2.点播暂停控制 C_HisVideoCtrl(hishandle1, 4, 0); sleep(10); // 3.点播播放控制 C_HisVideoCtrl(hishandle1, 1, 0); sleep(10); // 4.点播快放控制 C_HisVideoCtrl(hishandle1, 2, 4); sleep(10); // 5.点播跳转控制 C_HisVideoCtrl(hishandle1, 5, 500); sleep(10); // 6.点播快放控制 C_HisVideoCtrl(hishandle1, 1, 0); } sleep(10); //结束点播控制 C_HisVideoStop(hishandle1); sleep(50); C_UnInitSDK(); return 0; }
编译:
g++ testmain.cpp -L./ -l28181sdk -lpthread -Wl,-Bdynamic -lgcc_s -lrt -luuid -rdynamic -o test.out
lib28181sdk.so库和demo文件下载地址: http://download.csdn.net/download/songxiao1988918/10148473
相关文章推荐
- [置顶] 视频监控安防平台-GB28181SDK(2016版) 和windows demo-提供c++库和windows测试demo
- [置顶] 视频监控安防平台-国标28181 2016-GB28181 2016版检测经历 (平台上联和下联检测)
- 视频监控安防平台-onvif协议demo
- 视频监控安防平台-GB28181_2016版本-INVITE请求视频(UDP、TCP active、 TCP passive)
- 视频监控安防平台-国标28181 2016-GB28181 2016版检测经历 (平台上联和下联检测)
- 视频监控安防平台-GB28181-2016版-sip协议tcp沾包流程
- 视频监控安防平台-GB28181_2016版本-281818检测点播下载
- 视频监控安防平台-GB28181_2016版-注册、心跳、注销
- [置顶] 视频监控安防平台-通过RTSP输出GB28181平台或则GB28181设备码流的管理应用小平台GB28181_RTSP
- 视频监控安防平台--国标28181-2016版本TCP码流沾包流程
- hihocoder #1290 : Demo Day (2016微软编程测试第三题)
- 如何成功运行SDL官方提供的Android平台的Demo
- 视频监控安防平台-GB28181-系统目录查询TCP协议和系统录像文件检索TCP协议
- 微信在android平台上开发的注意事项(以官方提供的demo为例):
- 搭建自动化测试平台(selenium+testng+maven+svn+Jenkins)【转自galen2016】
- 如何成功运行SDL官方提供的Android平台的Demo
- 视频监控安防平台-RTSPClient高并发请求
- 坑爹,三星怎么不提供S5PV210 的wince6.0 R3 的opengl驱动和相关opengl 的测试应用程序demo?!
- Web应用扫描测试工具Vega Vega是Kali Linux提供的图形化的Web应用扫描和测试平台工具。该工具提供代理和扫描两种模式。在代理模式中,安全人员可以分析Web应用的会话信息。通过工具自
- Mac平台下QT环境配置与Demo测试