视频监控汇聚平台:通过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;     // 通道IDstring name;          // 通道名称string desc;          // 通道描述int status;           // 通道状态int channelType;      // 通道类型string channelSN;     // 通道序列号string rights;        // 访问权限int cameraType;       // 摄像头类型string CtrlId;        // 控制IDdouble 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;      // 设备IDdouble 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);// 设置报警,返回报警IDint SetupAlarm(long LoginID);// 取消报警int CancelAlarm(long lHandle);// 构造函数CNetSdkForDaHuaDSSPlatform();// 析构函数~CNetSdkForDaHuaDSSPlatform();// 初始化SDKint ZXInit(void);// 清理SDKint 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);// 控制PTZint ZXPtzControl(long LoginID, int channelid, int opt, int param1, TExtPtzInfo *pExtPtzInfo);// 设置平台状态void SetPlatformStatus(bool bIsOnline);// 获取平台状态int GetPlatformStatus();// 发送报警信息至SIP UAvoid SendAlarmInfoToSipUA(string SerialNumber, bool IsOnline);// 发送GPS信息至SIP UAvoid 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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mongodb-04】Mongodb聚合管道操作基本功能

Mongodb系列整体栏目 内容链接地址【一】Mongodb亿级数据性能测试和压测https://zhenghuisheng.blog.csdn.net/article/details/139505973【二】springboot整合Mongodb(详解)https://zhenghuisheng.blog.csdn.net/article/details/139704356【三】亿级数据从mysql迁移到mongodb…

SpringCloud第三篇(服务中心与OpenFeign)

p 文章目录 一、服务中心二、Nacos注册中心 一、服务中心 在上一章我们实现了微服务拆分&#xff0c;并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。 试想一下&#xff0c;假如商品微服务被调用较多&#xff0c;为了应对更高的并发…

【产品应用】一体化步进伺服电机在板材封边机中的应用

随着现代工业技术的快速发展&#xff0c;封边机作为木材加工行业的重要设备&#xff0c;其精度、效率和稳定性已成为衡量设备性能的重要指标。 近年来&#xff0c;一体化步进伺服电机因其高精度、高效率和强稳定性等特点&#xff0c;在封边机中得到了广泛应用。 本文将详细介绍…

1.5.1抽象java入门

前言&#xff1a; 1.5.0版本中&#xff0c;我们熟练使用Git三个可视化操作&#xff08;签出&#xff0c;提交&#xff0c;对比&#xff09;&#xff0c;再加上1.4.0版本的新建&#xff0c;总计使用四个Git可视化操作&#xff1b;对java编程的学习&#xff0c;总结&#xff0c;…

vue 前端项目调用后端接口记录

axios中不同的类型的请求附带数据使用的关键字 请求类型关键字示例GETparamsaxios({ method: get, url: example.com, params: { key: value } })POSTdataaxios({ method: post, url: example.com, data: { key: value } })PUTdataaxios({ method: put, url: example.com, dat…

MICCAI 2024 每日一篇论文 纯纯直读 CUTS:用于多粒度无监督医学图像分割的深度学习和拓扑框架

MICCAI 2024 CUTS: A Deep Learning and Topological Framework for Multigranular Unsupervised Medical Image Segmentation CUTS: 用于多粒度无监督医学图像分割的深度学习和拓扑框架 作者 陈璐1*、Matthew Amodio1*、梁博伦.沈2、冯高3、阿曼阿维斯塔4、Sanjay Aneja3,5…

[RuoYi-Vue] - 1. 项目搭建

文章目录 &#x1f42c;初始化后端项目拉取RuoYi-Vue代码Maven构建导入数据库ry-vue修改配置信息启动Redis启动项目 &#x1f30c;初始化前端项目拉取RuoYi-Vue3代码项目运行成功页面 &#x1f42c;初始化后端项目 拉取RuoYi-Vue代码 若依/RuoYi-Vue 代码地址 Maven构建 导入数…

7.2 AQS原理

AQS 原理 概述 全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架。 特点&#xff1a; 用 state 属性来表示资源的状态&#xff08;分独占模式和共享模式&#xff09;&#xff0c;子类需要定义如何维护这个状态&#xff0c;控制如何获取锁和…

three.js官方案例(animation / skinning / ik)webgl_animation_skinning_ik.html学习记录

目录 1 WebGLCubeRenderTarget 2 TransformControls 3 CCDIKSolver 4 CCDIKHelper 4 全部脚本 1 WebGLCubeRenderTarget 球体亮 //WebGLCubeRenderTarget(size : Number, options : Object) //size - the size, in pixels. Default is 1. //options - (可选)一个保存…

软件设计之Java入门视频(15)

软件设计之Java入门视频(15) 视频教程来自B站尚硅谷&#xff1a; 尚硅谷Java入门视频教程&#xff0c;宋红康java基础视频 相关文件资料&#xff08;百度网盘&#xff09; 提取密码&#xff1a;8op3 idea 下载可以关注 软件管家 公众号 学习内容&#xff1a; 该视频共分为1-7…

Linux桌面溯源

X窗口系统(X Window System) Linux起源于X窗口系统&#xff08;X Window System&#xff09;&#xff0c;亦即常说的X11&#xff0c;因其版本止于11之故。 X窗口系统&#xff08;X Window System&#xff0c;也常称为X11或X&#xff09;是一种以位图方式显示的软件窗口系统。…

zabbix 7.0 SNMP Hex数据预处理新功能

一、简介 zabbix7.0新特性是监控项新增支持SNMP Hex数据预处理。其中内置了对snmp请求结果Hex转换处理&#xff0c;不再需要使用繁琐的方式&#xff0c;如javascript脚本、替换、修整等方式处理将监控项取值做可视化处理&#xff0c;大福提升SNMP采集获取到Hex数据的处理效率。…

浅析 VO、DTO、DO、PO 的概念

文章目录 I 浅析 VO、DTO、DO、PO1.1 概念1.2 模型1.3 VO与DTO的区别I 浅析 VO、DTO、DO、PO 1.1 概念 VO(View Object) 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设…

【C++】优先级队列(底层代码解释)

一. 定义 优先级队列是一个容器适配器&#xff0c;他可以根据不同的需求采用不同的容器来实现这个数据结构&#xff0c;优先级队列采用了堆的数据结构&#xff0c;默认使用vector作为容器&#xff0c;且采用大堆的结构进行存储数据。 &#xff08;1&#xff09;在第一个构造函数…

Qt之元对象系统

Qt的元对象系统提供了信号和槽机制&#xff08;用于对象间的通信&#xff09;、运行时类型信息和动态属性系统。 元对象系统基于三个要素&#xff1a; 1、QObject类为那些可以利用元对象系统的对象提供了一个基类。 2、在类声明中使用Q_OBJECT宏用于启用元对象特性&#xff0c…

项目收获总结--本地缓存方案选型及使用缓存的坑

本地缓存方案选型及使用缓存的坑 一、摘要二、本地缓存三、本地缓存实现方案3.1 自己编程实现一个缓存3.2 基于 Guava Cache 实现本地缓存3.3 基于 Caffeine 实现本地缓存3.4 基于 Encache 实现本地缓存3.5 小结 四、使用缓存的坑4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩4.4 数据…

如何管理好【管理层】?

如何管理好管理层? 现在流行“找客户痛点,不如找领导G点” 管理好管理层比管理好员工更重要,不要让管理层成为传话筒。你是抱着很大期望提供优厚的待遇聘用管理层,对于所有人来说,你需要一个这样的职位,对于他需要一分工作而已。出色的管理层就像出色的员工一样非常难寻…

leetcode日记(38)字母异位词分组

最开始的想法是创建vector<vector<string>> result&#xff0c;然后遍历strs中字符串&#xff0c;遍历result中vector&#xff0c;比较vector中第一个string和strs中string&#xff0c;若为字母异位词&#xff0c;则加入vector&#xff0c;若无&#xff0c;则创建新…

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript 三、主流框架vue3框架 四、 工具&#xff08;特定框架&#xff09;1、uinapp 五、组件库&#xff08;&#xff09;1、uView如何在哪项目中导入uView 六、应用&#xff08;各种应…

Vulnhub靶场 | DC系列 - DC2

目录 环境搭建渗透测试 环境搭建 靶机镜像下载地址&#xff1a;https://vulnhub.com/entry/dc-2,311/需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网段存活主机 …