视频监控汇聚平台:通过SDK接入大华DSS视频监控平台的源代码解释和分享

目录

一、视频监控汇聚平台

1、概述

2、视频接入能力

3、视频汇聚能力

二、大华DSS平台

1、DSS平台概述

2、大华DSS平台的主要特点

(1)高可用性

(2)高可靠性

(3)易维护性

(4)灵活的扩展性

(5)智能分析功能

(6)完善的权限管理

(7)丰富的场景应用

三、代码和解释

1、代码和注释

2、函数功能说明

(1)引入的头文件

(2)自定义结构体

(3)类定义

(4)成员方法

(5)成员变量

四、效果展示


一、视频监控汇聚平台

1、概述

        视频监控接入汇聚平台是集成了视频资源接入、汇聚、存储、处理、分析、运维等多种功能的综合性平台,旨在实现不同品牌、不同协议、不同型号的视频监控资源的统一接入、汇聚、存储、管理和应用。

        接入汇聚平台支持多种接入协议,如GB/T28181、RTSP、ONVIF、RTMP等通用协议以及一些特定的协议,实现视频资源的集中管理和融合应用,同时能够提供API接口供应用系统进行调用。 

2、视频接入能力

        平台能够实现接入不同品牌的视频监控平台、视频相关设备、外围设备等等;包括海康威视、浙江大华、苏州科达、杭州宇视、Panasonic和axis等。

        支持国际和国内的一些标准对接协议,包括sdk协议、GB/T28181协议、ehome/ISUP协议、主动注册协议等等。可以通过各种协议,接入IPC、DVR、DVS、NVR等设备,以及一些大型的视频监控平台,包括海康威视、浙江大华、苏州科达、杭州宇视等主流品牌的监控平台,对于有些特有品牌的平台,也能够通过SDK接口、私有协议等方式接入进入本系统平台(国外品牌包括:Panasonic和axis等);

3、视频汇聚能力

        平台通过流媒体传输协议接入各种视频源设备,能够同时接入大量的视频终端设备;将分散的各类视频资源进行统一汇聚、整合和集中管理。

        通过分布式架构和流媒体传输技术,平台可以轻松应对成千上万路视频流的接入需求;这种能力使得平台能够应对大规模的视频监控需求,实现视频监控资源的全面覆盖和高效利用。

        汇聚能力体现在多种方式、大规模设备接入、视频流整合与管理、灵活的播放与分发、高并发访问与负载均衡以及丰富的管理功能等多个方面。这些能力共同构成了视频监控汇聚平台的核心竞争力,为用户提供了高效、智能、便捷的视频监控解决方案。

二、大华DSS平台

1、DSS平台概述

        大华DSS(Disaster Recovery Switching)平台是大华股份推出的一款智能视频监控平台,它专注于为用户提供高效、稳定的视频监控服务,具备高可用性、高可靠性、易维护性等特点。该平台采用了先进的视频编码技术、网络技术和大华独有的视频存储技术,可广泛应用于公安、交通、金融、教育等各类监控场景。

2、大华DSS平台的主要特点

(1)高可用性

        通过支持热插拔硬盘、模块化设计等手段,确保了系统的高可用性。即使在硬件故障的情况下,也能实现快速切换,保证视频监控业务的连续性。

(2)高可靠性

        采用冗余设计,确保了关键组件的双备份,如电源、网络、存储等,有效降低了系统故障的风险。

(3)易维护性

        通过图形化界面、智能化诊断等功能,简化了系统运维工作,降低了运维成本。

        强大的视频处理能力:支持大规模视频接入、存储、转发和分发,可满足各类监控场景的需求。

(4)灵活的扩展性

        支持多种接口类型,如USB、HDMI、VGA等,方便用户实现多种设备的接入和扩展。

(5)智能分析功能

        支持实时视频分析,如人脸识别、车辆抓拍等,为用户提供更加智能化的监控体验。

(6)完善的权限管理

        支持多级用户权限管理,确保了系统数据的安全性。

(7)丰富的场景应用

        凭借高性能和大华成熟的解决方案,大华DSS平台可广泛应用于各类监控场景,如平安城市、智慧交通、金融安防等。

三、代码和解释

        以下部分C++代码是大华DSS视频监控平台接入到AS-V1000视频监控汇聚平台的SDK代码的头文件,列出了相关的函数,具体如下:

1、代码和注释

        以下是为代码和注释:

#include <string>         // 引入标准字符串库
#include "NetSdkApp.h"    // 引入大华网络SDK的基础应用类头文件
#include "InstructConvert.h" // 引入指令转换头文件,可能用于数据格式转换
using namespace std;      // 使用std命名空间,避免每次使用标准库元素时前缀std::

// 定义DaHuaDssChanInfo结构体,用于存储大华DSS平台的通道信息
struct DaHuaDssChanInfo {
    string ChannelId;     // 通道ID
    string name;          // 通道名称
    string desc;          // 通道描述
    int status;           // 通道状态
    int channelType;      // 通道类型
    string channelSN;     // 通道序列号
    string rights;        // 访问权限
    int cameraType;       // 摄像头类型
    string CtrlId;        // 控制ID
    double latitude;      // 经度
    double longitude;     // 纬度
    string viewDomain;    // 视域
    string cameraFunctions;// 摄像头功能
    string multicastIp;   // 多播IP地址
    int multicastPort;    // 多播端口号
    string NvrChnlIp;     // NVR通道IP地址
    int channelRemoteType;// 通道类型
    string subMulticastIp;// 多播IP地址
    int subMulticastPort; // 多播端口号

    // 构造函数,初始化所有成员变量为默认值
    DaHuaDssChanInfo() {
        ChannelId = "";
        name = "";
        desc = "";
        status = 0;
        channelType = 0;
        channelSN = "";
        rights = "";
        cameraType = 0;
        CtrlId = "";
        latitude = 0.0;
        longitude = 0.0;
        viewDomain = "";
        cameraFunctions = "";
        multicastIp = "";
        multicastPort = 0;
        NvrChnlIp = "";
        channelRemoteType = 0;
        subMulticastIp = "";
        subMulticastPort = 0;
    }
};

// 定义DaHuaDssGpsStatus结构体,用于存储大华DSS平台的GPS状态信息
struct DaHuaDssGpsStatus {
    string DeviceId;      // 设备ID
    double Latitude;      // 纬度
    double Longitude;     // 经度
    double Hight;         // 高度
    double Angle;         // 方位角
    double Speed;         // 速度
    int Stars;            // 卫星数量
    int Antenna;          // 天线状态
    int Orientation;      // 方向
    long ChangeTime;      // 更新时间

    // 构造函数,初始化所有成员变量为默认值
    DaHuaDssGpsStatus() {
        DeviceId = "";
        Latitude = 0.0;
        Longitude = 0.0;
        Hight = 0.0;
        Angle = 0.0;
        Speed = 0.0;
        Stars = 0;
        Antenna = 0;
        Orientation = 0;
        ChangeTime = 0;
    }
};

// 定义CNetSdkForDaHuaDSSPlatform类,继承自CNetSdkApp
class CNetSdkForDaHuaDSSPlatform : public CNetSdkApp {
public:
    // 设置报警回调函数
    int SetAlarmCallBack(long& UserData);
    
    // 设置报警,返回报警ID
    int SetupAlarm(long LoginID);
    
    // 取消报警
    int CancelAlarm(long lHandle);

    // 构造函数
    CNetSdkForDaHuaDSSPlatform();
    
    // 析构函数
    ~CNetSdkForDaHuaDSSPlatform();

    // 初始化SDK
    int ZXInit(void);
    
    // 清理SDK
    int ZXClean(void);
    
    // 登录设备
    long ZXLogin(char* pDevIp, UINT16 DevPort, char* pUsername, char* pPasswd, char *pOnvifURL, long& UserData);
    
    // 登出设备
    int ZXLogout(long LoginID, long& UserData);
    
    // 开始实时预览
    long ZXRealPlay(long LoginID, int Channel, int StreamId, StreamInfo *pStreamInfo, long& UserData);
    
    // 停止实时预览
    int ZXStopRealPlay(long VideoHdl);
    
    // 保持连接活动
    bool ZXKeepAlive(long LoginID);
    
    // 查找通用文件(录像)
    int ZXFindCommonFile(long LoginID, int Channel, char *pBeginTime, char *pEndTime, TRecordInfoQueryResp* RecordInfo, DevInfo *pDevInfo);
    
    // 开始回放
    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);
    
    // 控制PTZ
    int ZXPtzControl(long LoginID, int channelid, int opt, int param1, TExtPtzInfo *pExtPtzInfo);
    
    // 设置平台状态
    void SetPlatformStatus(bool bIsOnline);
    
    // 获取平台状态
    int GetPlatformStatus();
    
    // 发送报警信息至SIP UA
    void SendAlarmInfoToSipUA(string SerialNumber, bool IsOnline);
    
    // 发送GPS信息至SIP UA
    void SendGpsToSipUA(vector<DaHuaDssGpsStatus> &GpsInfo);

private:
    // 解析通道信息
    int ParseChanInfo(char *pstr, vector<DaHuaDssChanInfo> &vChanInfo);
    
    // 发送子通道信息至数据库
    bool SendSubChanToDB(long& UserData, vector<DaHuaDssChanInfo> &vChanInfo);
    
    // SDK状态回调函数
    static int32_t DPSDKStatusCallback(int32_t nPDLLHandle, int32_t nStatus, void* pUserParam);

private:
    char m_DevIp[IPSTR_MAX_LEN+1]; // 设备IP地址
    char m_UserName[USERNAME_MAX_LEN+1]; // 用户名
    char m_Passwd[USERNAME_MAX_LEN+1]; // 密码
    int m_DevPort; // 设备端口号
    int m_PlatformStatus; // 大华DSS平台在线状态;1:在线;0:不在线
    long DevCtrlHandle; // 设备控制句柄

    static void *m_GpsHandle; // GPS处理句柄
};

2、函数功能说明

        前面列出的C++代码定义了一个类CNetSdkForDaHuaDSSPlatform`,它是从CNetSdkApp` 类继承来的,主要用于封装和大华DSS平台交互的网络SDK功能。这个类封装了一系列方法,用于登录、实时预览、回放控制、PTZ控制、报警设置等,以及一些辅助方法和成员变量。

(1)引入的头文件

-<string>`:标准库中的字符串处理头文件。

-"NetSdkApp.h"`:可能是一个自定义的基类或SDK提供的基础类头文件。

-"InstructConvert.h"`:可能是用于指令转换的自定义头文件。

(2)自定义结构体

-DaHuaDssChanInfo`:描述了大华DSS平台上的通道信息,包括通道ID、名称、描述、状态、类型、序列号、权限、摄像头类型、控制ID、经纬度、视域、功能、多播IP/端口、NVR通道IP、远程类型、子多播IP/端口等。

-DaHuaDssGpsStatus`:描述了GPS状态,包括设备ID、纬度、经度、高度、角度、速度、卫星数、天线状态、方向和变更时间。

(3)类定义

        -CNetSdkForDaHuaDSSPlatform`:这个类提供了与大华DSS平台通信的方法,包括初始化、清理、登录、登出、实时预览、录像查询、回放控制、PTZ控制、平台状态设置/获取、发送报警信息和GPS信息至SIP UA等功能。

(4)成员方法

- 公有成员方法:用于外部调用,如登录、实时预览、回放控制、报警设置等。

- 私有成员方法:用于内部逻辑处理,如解析通道信息、发送子通道信息至数据库、状态回调等。

(5)成员变量

-m_DevIp`,m_UserName`,m_Passwd`,m_DevPort`:存储设备的IP地址、用户名、密码和端口号。

-m_PlatformStatus`:存储平台的在线状态。

-DevCtrlHandle`:可能用于存储设备控制句柄。

-m_GpsHandle`:静态成员,可能用于存储GPS处理的句柄或资源。

四、效果展示

      可以通过视频监控汇聚平台的web客户端,查看大华DSS下挂的视频图像,如下图,为刚刚截取的现场视频:

 


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


最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:46:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:46:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:46:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 21:46:04       69 阅读

热门阅读

  1. (day11)1614. 括号的最大嵌套深度

    2024-07-13 21:46:04       18 阅读
  2. anaconda常用指令学习

    2024-07-13 21:46:04       18 阅读
  3. paddlenlp cpu windows 下测试gpt

    2024-07-13 21:46:04       21 阅读
  4. 维度评分:Kylin Cube设计中的自定义智能

    2024-07-13 21:46:04       21 阅读
  5. ArcGIS Pro SDK (九)几何 1 空间参考

    2024-07-13 21:46:04       17 阅读
  6. 树和二叉树_4

    2024-07-13 21:46:04       22 阅读
  7. centos7安装mongodb

    2024-07-13 21:46:04       15 阅读