视频联网云平台EasyCVR是一个集视频联网共享、存储、流媒体转发、视频转码、视频上云、智能分析统一等多种功能为一体的流媒体视频服务融合性平台。EasyCVR可以集成海康EHome私有协议,本文讲一下EasyCVR集成海康EHome协议报警模块。

开启监听服务并接收设备报警信息依赖于中心管理服务(CMS)和报警管理服务(AMS)。监听服务开启后,当报警被触发时,设备会自动上传报警,因此可通过配置监听服务(即AMS)接收报警信息。

开启监听服务并接收报警的接口调用流程图:

操作基本步骤:

1、调用NET_EALARM_StartListen开启AMS报警监听并注册回调函数用于接收报警信息。AMS的IP地址和端口号由CMS发送给设备。

2、当报警触发时,从AMS注册的回调函数中获取报警信息进行处理。

3、调用NET_EALARM_StopListen停止AMS报警监听。

4、调用NET_ECMS_ForceLogout强制注销设备

前提条件:
1、请确保已调用NET_ECMS_Init和NET_EALARM_Init初始化CMS和AMS。
2、请确保已调用NET_ECMS_StartListen开启CMS监听以接收设备注册信息。

如果是ehome v4 版本,设备要设置SessionKey,SessionKey可通过回调数据类型“enum_dev_sessionkey”获得。

开启监听服务并接收报警的示例代码

注:在该示例代码中,CMS和AMS安装在同一台电脑的同一个程序中。

#include <stdio.h>
#include <Windows.h>
#include "HCISUPCMS.h"
#include "HCISUPAlarm.h"LONG lLoginID = -1;
LONG lListenHandle = -1;//
//注册回调函数
BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
{if (ENUM_DEV_ON == dwDataType){NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;if (pDevInfo != NULL){lLoginID = lUserID;printf("On-line, lUserID: %d, Device ID: %s\n", lLoginID, pDevInfo->byDeviceID);}//输入参数NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;pServerInfo->dwTimeOutCount = 6; //心跳超时次数pServerInfo->dwKeepAliveSec = 15; //心跳间隔memcpy(pServerInfo->struUDPAlarmSever.szIP, "10.16.2.123", sizeof("10.16.2.123")); //报警服务器IP地址(TCP协议) pServerInfo->struUDPAlarmSever.wPort = 7200; //报警服务器端口(UDP协议),需要和报警服务器启动监听的端口一致pServerInfo->dwAlarmServerType = 0;  //报警服务器类型:0- 只支持UDP协议上报,1- 支持UDP、TCP两种协议上报}else if (ENUM_DEV_OFF == dwDataType){printf("Off-line, lUserID: %d\n", lUserID);NET_ECMS_ForceLogout(lUserID);       }else{}return TRUE;
}//
//AMS报警回调函数
BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData)
{lListenHandle = lHandle;DWORD dwType = pAlarmMsg->dwAlarmType;  //不同的报警类型(dwAlarmType),pAlarmInfo对应不同的报警信息类型printf("Callback of alarm listening, dwAlarmType[%d]\n", dwType);switch(dwType){case EHOME_ALARM_UNKNOWN://未知报警信息printf("Unknown Alarm Type!\n");break;case EHOME_ALARM://基本报警信息:移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等NET_EHOME_ALARM_INFO struAlarmInfo;memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));printf("Basic Alarm: Device ID[%s], szAlarmTime[%s], Alarm Type[%d], Action[%d], VideoChannel[%d]!\n", struAlarmInfo.szDeviceID, \struAlarmInfo.szAlarmTime, struAlarmInfo.dwAlarmType, struAlarmInfo.dwAlarmAction, struAlarmInfo.dwVideoChannel);break;case EHOME_ALARM_HEATMAP_REPORT://热度图报告上传NET_EHOME_HEATMAP_REPORT struHeatmapInfo;memcpy(&struHeatmapInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_HEATMAP_REPORT));printf("Heatmap report: Device ID[%s], StartTime[%s], StopTime[%s], dwVideoChannel[%d]!\n", struHeatmapInfo.byDeviceID, \struHeatmapInfo.byStartTime, struHeatmapInfo.byStopTime, struHeatmapInfo.dwVideoChannel);break;case EHOME_ALARM_FACESNAP_REPORT://人脸抓拍报告上传NET_EHOME_FACESNAP_REPORT struFaceSnap;memcpy(&struFaceSnap, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_FACESNAP_REPORT));printf("Face snap: Device ID[%s], AlarmTime[%s], dwFaceScore[%d], dwVideoChannel[%d]!\n", struFaceSnap.byDeviceID, \struFaceSnap.byAlarmTime, struFaceSnap.dwFaceScore, struFaceSnap.dwVideoChannel);break;case EHOME_ALARM_GPS://GPS信息上传NET_EHOME_GPS_INFO struGpsInfo;memcpy(&struGpsInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_GPS_INFO));printf("GPS info: Device ID[%s], SampleTime[%s], Longitude[%d], Latitude[%d]!\n", struGpsInfo.byDeviceID, \struGpsInfo.bySampleTime, struGpsInfo.dwLongitude, struGpsInfo.dwLatitude );break;case EHOME_ALARM_CID_REPORT://报警主机CID报警信息NET_EHOME_CID_INFO struCIDInfo;memcpy(&struCIDInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_CID_INFO));printf("CID info: Device ID[%s], AlarmTime[%s], CID Code[%d], CID Type[%d], CID Describe[%s]!\n", struCIDInfo.byDeviceID, \struCIDInfo.byTriggerTime, struCIDInfo.dwCIDCode, struCIDInfo.dwCIDType, struCIDInfo.byCIDDescribe );break;default:break;}return TRUE;
}void main(){//开启AMS报警监听//AMS初始化NET_EALARM_Init();//报警监听参数NET_EHOME_ALARM_LISTEN_PARAM struListen = {0};memcpy(struListen.struAddress.szIP, "10.16.2.123", sizeof("10.16.2.123"));struListen.struAddress.wPort = 7200; //报警服务的监听端口struListen.fnMsgCb = AlarmMSGCallBack; //报警回调函数struListen.pUserData = NULL;struListen.byProtocolType = 1; //0- TCP方式(保留,暂不支持),1- UDP方式//启动报警监听LONG lHandle = NET_EALARM_StartListen(&struListen);if(lHandle < -1){printf("NET_EALARM_StartListen failed, error code: %d\n", NET_EALARM_GetLastError());NET_EALARM_Fini();return;}printf("NET_EALARM_StartListen!\n");////CMS注册模块初始化NET_ECMS_Init();//注册监听参数NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));struCMSListenPara.struAddress.wPort = 7660;struCMSListenPara.fnCB = RegisterCallBack;//启动监听,接收设备注册信息,注册回调函数里面需要发送报警主机IP和端口给设备LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);if(lListen < -1){printf("NET_ECMS_StartListen failed, error code: %d\n", NET_ECMS_GetLastError());NET_ECMS_Fini();return;}printf("NET_ECMS_StartListen!\n");while(1){Sleep(1000);  //注册成功之后再做后续操作if(lLoginID >= 0){break;}}Sleep(300000); //等待5分钟,接收报警信息//退出//CMS停止监听if(!NET_ECMS_StopListen(lListen)){printf("NET_ECMS_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());}//CMS反初始化,释放资源NET_ECMS_Fini();//AMS停止报警监听if(lListenHandle >= 0){if (!NET_EALARM_StopListen(lListenHandle)){printf("NET_EALARM_StopListen failed, error code: %d\n", NET_ECMS_GetLastError());}}//AMS反初始化,释放资源NET_EALARM_Fini();printf("Exit!");
}

如果大家还想了解更多关于EasyCVR集成海康EHome私有协议的调用和说明,可以翻阅TSINGSEE青犀视频往期相关文章,其中包括:设备录像回看说明、语音对讲操作流程、Ehome协议调用流程介绍等。

视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列——报警模块说明相关推荐

  1. 视频监控系统上云解决方案EasyCVR集成海康EHome私有协议系列——文件查找操作流程

    视频监控系统采用云模式进行规划.建设和部署,实现了资源的共享.数据的融通.算力的提升:而开放的生态和业务的智能,让视频监控系统更好地为公安实战服务,让城市更安全.TSINGSEE青犀视频团队研发的Ea ...

  2. 视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列——通过流媒体服务开启语音对讲

    TSINGSEE青犀视频团队研发的视频平台大多已经支持了语音对讲的功能,EasyCVR视频上云服务也能够在海康EHome协议下调用语音对讲(语音对讲操作流程),本文是语音对讲功能的一个拓展,将跟大家讲 ...

  3. 视频联网云平台EasyCVR集成海康EHome协议:Ehome协议预览流程

    之前我们讲了EasyCVR视频平台集成了海康EHome协议系统配置,EasyCVR集成海康EHome私有协议内容繁杂琐碎,测试内容众多,所以我们特地开辟一个系列,如果大家有兴趣,可以翻阅以往的博客了解 ...

  4. 安防视频监控系统视频上云解决方案EasyCVR语音转发功能音频数据打包发送流程介绍

    目前我们的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Ehome协议调用流程介绍. ...

  5. 保险业务与系统——保险上云解决方案总体架构及应用案例

    保险上云解决方案总体架构 原文链接:https://www.aliyun.com/solution/finance/insurancecloud 1. 保险行业云服务解决方案总体架构 2. 上云方案优 ...

  6. 安防视频监控系统视频上云解决方案EasyCVR音频基础知识一文全介绍

    EasyCVR是TSINGSEE青犀视频研发的视频上云网关,设备端有公网IP,可通过海康SDK.Onvif/RTSP.GB28181.ehome协议接入到EasyCVR中:设备端无公网IP,可通过GB ...

  7. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...

    目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...

  8. 基于EasyDarwin流媒体云平台的智能视频监控系统框架

    基于EasyDarwin流媒体云平台的智能视频监控系统框架 EasyDarwin云平台作为国内较有影响力的开源流媒体平台,集流媒体分发,录像,信令交互为一体,目前已经被广泛应用到监控互联网各个领域:从 ...

  9. 智慧电力视频监控系统解决电力安全巡检难题

    随着电力行业的快速发展,电力系统内各种生产设备数目越来越多.分布越来越广,相应的维护也变得越来越困难,传统人力监管维护非常吃力.在发电.输电.变电.配电不同类型的电力场景下,需要工作人员及时维护,提供 ...

最新文章

  1. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能
  2. PSM-省电模式(PowerSaving Mode)
  3. POJ 1006 Biorhythms 中国的法律来解决剩余的正式
  4. 模拟电路技术之基础知识(五)
  5. nginx学习笔记(7)Nginx如何处理一个请求---转载
  6. React Router 使用教程
  7. CentOS 7 官方yum库安装 MySQL
  8. python预处理缺失值_[Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理
  9. cisco 防火墙模拟器_【方案分享】如何解决cisco设备无法进入系统问题?
  10. powerdesigner 导出数据库表结构
  11. 《TCP/IP详解》学习笔记(七):广播和多播、IGMP协议
  12. VMware虚拟机的三种联网方法及原理
  13. merge into报错ORA-00926、ORA-38014
  14. Linux网络编程和套接字
  15. 即时通讯源码|IM即时通讯源码开源
  16. 基于php014居民小区物业管理系统
  17. python3高级编程学习笔记(linux环境)
  18. 已经出狱的李一男和即将出狱的王欣,还能赶上这个时代吗?
  19. win7快捷方式去箭头_学会WIN+R,你的桌面再不需要快捷方式!
  20. 年过八旬指的是多少岁

热门文章

  1. 三相桥式全控整流电路simulink仿真_可控硅整流器如何实现整流调压的?
  2. (好用)部署nacos,docker-compse方式【无图脑补版】
  3. 因变量 方差膨胀系数_16种常用的数据分析方法汇总
  4. 大数据项目实战之数据仓库:用户行为采集平台——第4章 用户行为数据采集模块
  5. Chapter5:Octave教程:AndrewNg吴恩达《机器学习》笔记
  6. 对powershell的一次免杀
  7. React开发chrome插件系列教程之chrome插件基本介绍
  8. 体验 .NET MAUI RC3 ,马上就要发布RTM
  9. 表达式树使用(二)【修改表达式树】
  10. 回溯与分支限界算法c语言,回溯与分支限界算法设计.docx