当代智能监控平台不乏功能强大的产品,但由于涉及模块、组件多,产品容易臃肿,对私有化场景增加了一定的阻碍。于是,轻量化智能监控平台很有必要。
下面为大家一一介绍~
01. WVP是什么?
WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将不带国标功能的摄像机/直播流/直播推流转发到其他国标平台。
02. 基于WVP平台的智能监控产品
在WVP开源框架的基础上进行重构和融合,把强大的业务功能与WVP开源的强大底层视频支撑能力进行结合,构建新的智能监控平台。新的智能监控平台更加轻量化、功能更全面、部署更快捷。
03. Web服务端技术架构
各组件责任与功能:
1. 摄像头:提供视频流(国标摄像头需注册到Sip服务器);
2. Sip Server:国标摄像头sip信令鉴权,提供国标摄像头注册、注销、心跳,保活、开流、关流等一系列摄像头服务;
3. ZLMediaKit:流媒体服务器(一个基于C++11的高性能运营级流媒体服务框架),提供各种视频流协议推拉流直播点播等服务;
4. KubeEdge:一套开源的边缘计算平台,负责从MediaKit拉取视频流,抽帧,调取AI接口获取事件,并存放到Kafka消息队列中,实时监控设备在离线状态等;
5. AI服务:提供多种人脸识别,入侵检测,吸烟检测等多种算法的AI服务;
6. OSS:AI事件的图片、视频等储存服务,由KubeEdge实时上传;
7. Kafka:消息队列(KubeEdge与Web服务端之间),存放与传输KubeEdge检测出的AI事件;
8. Web Server:web服务端,提供设备管理、技能管理、事件管理、数据统计、数据分析等一系列web后端功能;
9. MongoDB:云存事件、AI事件的储存;
10. Mysql:Web服务端数据的储存;
11. Milvus数据库:储存人脸特征向量,并提供一系列人脸比对功能;
04. 摄像头技能下发时序图
上图描述了如何赋予摄像头AI技能:
1. 前端将页面每个摄像头配置了对应技能的信息按照一定的格式储存为json字符串传递给web服务端 ;
2. Web服务端将摄像头技能信息储存数据库同时,透传并下发给边缘端,消费Kafka的AI事件;
3. KudeEdge实时从MediaKit拉取视频流,并根据Web服务端下发的技能信息进行抽帧,调AI接口,并将检测到的事件上传到S3,存入Kafka消息队列;
4. S3:储存来自KudeEdge上传的图片与小视频,并提供URL下载地址;
5. Kafka:接收从KudeEdge生产过来的事件,提供给Web服务端进行消费。
05. 国标摄像机SIP信令注册流程图
1. 提前分配好摄像头用户名密码。
2. 国标摄像机后台填写好Sip服务器IP,用户名密码,国标Id,通道ID等相关信息,点击确定。
3. 摄像头会主动向填写的Sip地址发送注册请求。
4. Sip服务器会携带相关的鉴权字段,并返回401。
5. 摄像头拿到鉴权信息并重新发送注册请求,返回200成功。
该鉴权方法为Digest鉴权算法,常用于国标摄像机,1400摄像机等注册流程。
06. 国标摄像头实时开流技术架构
1. 媒体流接收者向SIP服务器发送 Invite消息;
2. SIP服务器收到Invite请求后,向媒体服务器发送 Invite消息;
3. 媒体服务器收到SIP服务器的 Invite请求后,回复200 OK响应;
4. SIP服务器收到媒体服务器返回的200 OK响应后,向媒体流发送者发送 Invite请求;
5. 媒体流发送者收到SIP服务器的Invite请求后,回复200 OK响应;
6. SIP服务器收到200 OK响应后向媒体服务器发送ACK请求, 完成与媒体服务器的Invite会话建立过程;
7. SIP服务器收到媒体流发送者返回的200 OK 响应后,向媒体流发送者发送ACK请求,完成与媒体流发送者的Invite会话建立过程;
8. 完成三方呼叫控制后,SIP服务器通过B2BUA代理方式建立媒体流接收者和媒体服务器之间的媒体连接;
9. 媒体服务器收到Invite请求,回复200OK响应,携带SDP消息体,消息体中描述了媒体服务器发送媒体流的IP端口、媒体格式SSRC值等内容;
10. SIP服务器将消息9转发给媒体流接收者;
11. 媒体流接收看收到200 OK响应后回复ACK消息,完成与SHP服务器的Invite会话建立过程;
12. SIP服务器将消息11转发给媒体服务器完成与媒体服务器的-Invite会话建立过程;
13. 最终两端都收到ack确认码后,媒体服务器将实时流推送给媒体接收者(播放端)。
07. 功能展示
总览页如下图:
支持的核心功能:
1. 支持海康,RTSP,国标等多种协议;
2. 技能配置;
3. 技能下发;
4. 事件的告警,统计等数据可视化,数据分析;
5. 设备管理;
6. 地图定位;
7. 云存回看;
8. 实时播放;
9. 车牌库;
10. 人脸库管理。
已实现的AI技能如下图:
08. 技术创新
使用MongoDb取代原先的Mysql来接收事件数据:
假如一家企业接入100路摄像头,每个摄像头平均5秒产生一个事件,预计每天将会有接近200万的数据进入数据库。对于海量数据库存储,为提高存储和查询效率,决定使用MongoDB。(Mysql:90ms, Mongo:10ms)
边缘端使用KubeEdge灵活调度盒子:
无需手动配置摄像头给盒子。根据负载情况灵活将摄像头分配到不同盒子(pod)。以前一个盒子就是一个单体,机器跑着一个服务,现在集群方式,服务跑在pod(盒子)上,可灵活调度pod。缓解摄像头拉流,抽帧,调AI接口等高频操作的压力,提高效率。
事件的图片和小视频分两次上报:
能更快获取到时间信息,提高告警时效性。
文章浏览阅读3.1k次。教育-市场调查与研究-章节资料考试资料-南京邮电大学【】第一周测验1、【单选题】市场调研帮助企业获取决策A、背景B、结果C、信息D、路径参考资料【 】2、【单选题】卡夫公司向市场推出了一款新的产品,可是产品的市场表现远低于预期。卡夫公司通过市场调查来了解原因。请问下述发现不属于信息的是 ?A、超过一半的被访者说不知道该产品是卡夫公司出品的B、那些知道这个产品却没有购买的人说,这个产品不好吃C、该产品在面世后仅仅获得2.5%的市场份额,远低于预期的5%D、试用过后,_南京邮电大学市场调查与研究慕课答案
文章浏览阅读3.4k次,点赞2次,收藏7次。一、导入jar包下载链接 二、配置文件配置文件名称:c3p0-config.xml (固定)配置文件路径:src (类路径)配置文件内容:命名配置<c3p0-config> <!-- 命名的配置 --> <named-config name="test"> <!-- 连接数据库的4项基本参数 -..._c3p0文档
文章浏览阅读358次。#include #include #include #include #include #include #include using namespace std;const int MAXN = 1005;const int INF = 1 << 30;struct Node { int u, w; friend bool operator<(const Node& _prim板子堆优化vector
文章浏览阅读172次。题目描述 Description 小松终于步入了大学的殿堂,带着兴奋和憧憬,他参加了信息科学技术学院的新生大会。会上,院长梅教授给大家介绍了在大学中的成绩计算方式: 需要解释一下的是,小_gpa输入的第一行
文章浏览阅读2w次,点赞8次,收藏7次。【每天1分钟】MarkDown语法学习之插入代码块Markdown在IT圈子里面比较流行的一个重要原因是,它能够轻松漂亮地插入代码。方法是,使用反引号`进行包裹即可。如果是行内代码引用,使用单个反引号进行包裹这是一段 var x = 3 行内代码如果插入一整段代码,需要至少使用两个以上反引号进行包裹, 看效果:fun (x: Int, y: Int): Int { return x ..._idea markdown 插入代码块
文章浏览阅读1.3k次,点赞29次,收藏20次。缓存穿透:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都会去查数据库,数据库的压力增大。缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮。缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。客户端对数据库中的数据主要有两类操作,读(select)与写(DML)。缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。
文章浏览阅读1.9w次,点赞7次,收藏60次。在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 本文的目的就是对常用的相似性度量作一个总结。本文目录:1.欧氏距离2.曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离_马氏距离中间那个矩阵是啥
文章浏览阅读820次。表输出控件如下1)步骤名称,2)数据库连接,前面有过部分解释3)目标模式,数据库中的概念,引用:https://www.cnblogs.com/csniper/p/5509620.html(感谢)4)目标表:数据库中的表,这里有两种方式:(1) 应用数据库中已经存在的表,浏览表选中对应表即可,下图有部分sql功能。ddl可以执行ddl语句。(2) 创建新的表,填写表的名字,点击下面的sql就可以执..._kettle 步骤 提交
文章浏览阅读4.4k次,点赞2次,收藏2次。鼠标选中多行,按下 widows 下 Ctrl Shift L( Mac下 Command Shift L)即可同时编辑这些行;鼠标选中文本,反复按widows 下CTRL D(Mac下 Command D)即可继续向下同时选中下一个相同的文本进行同时编辑;鼠标选中文本,按下Alt F3(Win)或Ctrl Command G(Mac)即可一次性选择全部的相同文本进行同时编辑;..._submlite 同时操作多行 macos
文章浏览阅读252次。尽管Linux是具有广泛硬件和软件支持的出色操作系统,但现实是有时您必须使用Windows,这可能是由于关键应用程序无法在Linux下运行。 幸运的是,双重引导Windows和Linux非常简单-本文将向您展示如何使用Windows 10和Ubuntu 18.04进行设置。 在开始之前,请确保已备份计算机。 尽管双启动设置过程不是很复杂,但是仍然可能发生事故。 因此,请花点时间备份您的重要..._windows linux双启动
文章浏览阅读1.6w次,点赞25次,收藏20次。本文主要介绍Flink 的3种常用的operator(map、flatmap和filter)及以具体可运行示例进行说明.将集合中的每个元素变成一个或多个元素,并返回扁平化之后的结果。按照指定的条件对集合中的元素进行过滤,过滤出返回true/符合条件的元素。本文主要介绍Flink 的3种常用的operator及以具体可运行示例进行说明。这是最简单的转换之一,其中输入是一个数据流,输出的也是一个数据流。下文中所有示例都是用该maven依赖,除非有特殊说明的情况。中了解更新系统的内容。中了解更新系统的内容。_flink 常用的分类和计算
文章浏览阅读590次。IMP-00019: row rejected due to ORACLE error 12899IMP-00003: ORACLE error 12899 encounteredORA-12899: value too large for column "CRM"."BK_ECS_ORDER_INFO_00413"."POSTSCRIPT" (actual: 895, maximum..._row rejected due to oracle