视频监控接入平台:通过SDK接入AXIS设备 的源代码的函数和功能介绍及分享

目录

一、视频监控平台介绍

1、概述

2、视频接入能力介绍

3、功能介绍

二、AXIS网络摄像机

三、代码和解释

 1、代码和注释

 2、函数功能说明

(1)预处理指令

(2)包含头文件

(3)命名空间

(4)类定义

(5)公共成员函数

(6)构造函数和析构函数

(7)私有成员变量

四、效果展示


一、视频监控平台介绍

1、概述

        威迪斯特视频监控接入平台AS-V1000,也可以称为:视频监控综合资源管理平台,视频监控平台,视频监控汇聚平台(或视频监控汇集平台),视频监控管理平台,视频监控综合管理平台,是一套集成了用户设备权限管理、视音频监控、大容量存储、电子地图的系统平台软件。它结合了现代视频技术、网络通讯技术、计算机控制技术、流媒体传输技术的综合解决方案,为用户提供了强大的、灵活的组网和应用能力。

2、视频接入能力介绍

        系统平台能够实现接入不同品牌的视频监控平台、视频相关设备、外围设备等等;支持国际和国内的一些标准对接协议,包括sdk协议、GB/T28181协议、ehome协议等等。可以通过各种协议,接入IPC、DVR、DVS、NVR等设备,以及一些大型的视频监控平台,包括海康威视、浙江大华、苏州科达、杭州宇视等主流品牌的监控平台,对于有些特有品牌的平台, 也能够通过SDK接口、私有协议等方式接入进入本系统平台;反过来,本平台也提供开放接口,能够接入到其他标准或者非标准的平台。

        前面有篇文章:《AS-V1000平台使用SDK的方式接入监控设备》,有兴趣可以查看。

3、功能介绍

        平台实现了丰富的功能,包含:实时多媒体数据转发和管理、移动流媒体转发管理、不间断录像、录像文件检索和回放、录像下载、设备状态管理、系统报警管理、视频转码、视频点播等等;整个平台具备稳定可靠、使用安全、兼容性强、接口开放、服务可堆叠、服务可多级级联、系统可平滑扩容等特点。

二、AXIS网络摄像机

        Axis网络摄像机是一系列高品质、高安全性的网络视频产品,由Axis Communications公司研发。Axis是全球领先的网络视频解决方案提供商之一,专注于为各种环境提供创新的视频监控产品。Axis的网络摄像机广泛应用于各种场合,包括但不限于零售、银行、交通、政府和住宅等领域。

        本文主要介绍视频监控平台的部分代码的头文件,这个头文件定义了一些函数,可以通过AXIS的SDK接入AXIS网络摄像头。

三、代码和解释

 1、代码和注释

        以下是为代码及其注释:


	#if !defined(__NETSDK_FOR_AXIS_H__) 
	// 定义__NETSDK_FOR_AXIS_H__以防止头文件被重复包含 

	#define __NETSDK_FOR_AXIS_H__ 	


	// 引入必要的头文件 
	#include <string> 
	#include "NetSdkApp.h" 
	#include "TcpTransport.h" 
	


	// 使用std命名空间,这样我们就可以直接使用如string等类型,而不需要std::前缀 
	using namespace std; 	


	// 定义一个从CNetSdkApp类继承的CNetSdkForAXIS类 
	class CNetSdkForAXIS : public CNetSdkApp 
	{ 
	public: 
	// 设置报警回调函数,并传入用户数据作为参数 
	int SetAlarmCallBack(long& UserData); //set hik device alarm callback function 

	
	// 为该设备设置报警,并返回报警ID 
	int SetupAlarm(long LoginID); //setup alaram for this device,return alarm id 

	
	// 销毁该设备的报警 
	int CancelAlarm(long lHandle); //destroy alarm for this device 

	
	// 初始化函数,可能是进行一些初始化设置 
	int ZXInit(void); 	


	// 清理函数,可能是释放资源等 
	int ZXClean(void); 


	// 登录函数,传入设备IP、端口、用户名、密码等,并返回登录ID和用户数据 
	long ZXLogin(char* pDevIp, UINT16 DevPort, char* pUsername, char* pPasswd,char *pOnvifURL, long& UserData); 	


	// 登出函数,传入登录ID和用户数据 
	int ZXLogout(long LoginID,long& UserData); 	


	// 实时播放函数,传入登录ID、通道号、流ID等信息,并返回视频句柄和用户数据 
	long ZXRealPlay(long LoginID, int Channel, int StreamId, StreamInfo *pStreamInfo,/*VideoStreamCallBack CBFunc,*/ long& UserData); 
	

	// 停止实时播放函数,传入视频句柄 
	int ZXStopRealPlay(long VideoHdl); 

	// 保持连接活性的函数,传入登录ID 
	bool ZXKeepAlive(long LoginID); 

	// 设置设备日期时间的函数,传入登录ID和年月日时分秒信息 
	int ZXSetDateTime(long LoginID,int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond); 


	// 查找通用文件的函数,传入登录ID、通道号、开始时间和结束时间等 
	int ZXFindCommonFile(long LoginID,int Channel, char *pBeginTime, char *pEndTime, TRecordInfoQueryResp* RecordInfo, DevInfo *pDevInfo); 


	// 回放开始函数,传入登录ID、通道号、开始时间和结束时间等 
	long ZXPlayBackStart(long LoginID, int Channel, char *pBeginTime, char *pEndTime,long long& FileSize, long UserData, bool bDownLoad, DevInfo *pDevInfo); 


	// 回放停止函数,传入回放句柄 
	int ZXPlayBackStop(long PlayBackHdl); 	


	// 回放控制函数,传入回放句柄、控制命令、位置和总文件时间(可选) 
	int ZXPlayBackControl(long PlayBackHdl, ZXPlayControl_E CMD, long& Postion,long AllFileTime=0); 



	// 云台控制函数,传入登录ID、通道号、操作选项和参数等 
	int ZXPtzControl(long LoginID, int channelid,int opt, int param1,TExtPtzInfo *pExtPtzInfo); 



	// 开始被动解码函数,传入登录ID和通道号 
	long ZXStartPassiveDec(long LoginID, int Channel); 	


	// 发送被动解码数据的函数,传入解码句柄、数据缓冲区和长度 
	int ZXSendPassiveData(long DecHdl, UINT8* pBuf, int BufLen); 	


	// 停止被动解码的函数,传入解码句柄 
	int ZXStopPassiveDec(long DecHdl); 

	// 获取选项查询参数的函数(当前返回-1,可能是未实现或占位) 
	int ZXGetOptQueryParam(long LoginID, int channelid, int opt){return -1;} 

	
	public: 
	// 构造函数 
	CNetSdkForAXIS(); 	


	// 析构函数 
	~CNetSdkForAXIS(); 


	private: 

	………………

2、函数功能说明

        本段代码定义了一个名为 CNetSdkForAXIS C++类,该类主要用于与Axis网络摄像头或类似设备进行交互。

(1)预处理指令


	#if !defined(__NETSDK_FOR_AXIS_H__) 

	#define __NETSDK_FOR_AXIS_H__ 

	... 

	#endif

这是一个常见的头文件保护机制。它确保这个头文件在一个编译单元中只被包含一次,从而防止重复定义。

(2)包含头文件

#include <string>

#include "NetSdkApp.h"

#include "TcpTransport.h"

  • <string>:包含C++标准库中的字符串处理功能。
  • "NetSdkApp.h" 和 "TcpTransport.h":这两个可能是项目中的自定义头文件,它们可能包含与网络连接、应用逻辑或其他基础功能相关的类、函数和定义。

(3)命名空间

using namespace std;

        使用std命名空间,这样你就可以直接使用如string这样的标准库类型,而不需要每次都加上std::前缀。

(4)类定义

class CNetSdkForAXIS : public CNetSdkApp

{

...

};

        定义了一个名为CNetSdkForAXIS的类,该类从CNetSdkApp类继承。CNetSdkApp可能是一个通用的网络SDK基类,提供了基本的网络连接、错误处理或其他功能。

(5)公共成员函数

        这个类提供了多个公共成员函数,每个函数都执行与Axis设备交互的特定任务。例如:

  • SetAlarmCallBack:设置报警回调函数。
  • SetupAlarm:为设备设置报警。
  • CancelAlarm:取消设备的报警。
  • ZXLoginZXLogout:用于登录和登出设备。
  • ZXRealPlayZXStopRealPlay:开始和停止实时播放视频。
  • ZXSetDateTime:设置设备的日期和时间。
  • ZXFindCommonFile:在设备上查找通用文件。
  • ZXPlayBackStartZXPlayBackStopZXPlayBackControl:用于回放视频。
  • ZXPtzControl:控制设备的云台(Pan-Tilt-Zoom)。
  • ZXStartPassiveDecZXSendPassiveDataZXStopPassiveDec:可能与被动解码相关的功能。
  • ZXGetOptQueryParam:当前实现只返回-1,可能是未实现或占位符。

(6)构造函数和析构函数

CNetSdkForAXIS();

~CNetSdkForAXIS();

  • CNetSdkForAXIS():类的构造函数,可能在对象创建时执行一些初始化操作。
  • ~CNetSdkForAXIS():类的析构函数,可能在对象销毁时执行一些清理操作。

(7)私有成员变量

char m_DevIp[IPSTR_MAX_LEN+1];

char m_UserName[USERNAME_MAX_LEN+1];

char m_Passwd[USERNAME_MAX_LEN+1];

int m_DevPort;

        这些私有成员变量用于存储设备的IP地址、用户名、密码和端口号。IPSTR_MAX_LENUSERNAME_MAX_LEN可能是定义在其他地方的常量,用于指定这些字符串的最大长度。

四、效果展示

        可以通过视频监控平台的web客户端,查看axis的视频图像,如下图示:


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值