diff --git a/docs/video_system/index.html b/docs/video_system/index.html index 2268cc9..030b6ad 100644 --- a/docs/video_system/index.html +++ b/docs/video_system/index.html @@ -674,7 +674,7 @@ header, .context-menu, .megamenu-content, footer{
本系统默认支持海康摄像机的报警事件订阅,默认已经订阅,如果摄像机已经开启了报警事件的话,默认一般是关闭的,比如摄像机后面的开关量输入报警接口,需要web页面进去设置开启。报警订阅走的是onvif协议,默认测试过海康的摄像机,其余摄像机有些没有测试成功,后期会详细查下原因并改进,会持续更新完善。
本系统中将视频显示这块都封装成了一个控件,每个视频控件都有自己独立的悬浮条,悬浮条的位置可以自行修改两三行代码调整,默认悬浮条在顶部,自动拉伸填充显示,你也可以改成左侧右侧等位置显示,高度可调。悬浮条是一排按钮组成,具体按钮什么名称标识符和功能,可以自定义,控件的封装只是默认放了一排按钮,除了关闭按钮实现了功能外,其余都是信号的形式发出去的,具体操作由程序员本身根据不同的厂家来定义不同的功能。
- 视频控件已经将OSD标签封装好了,默认提供两路OSD设置,每个OSD都可以设置是否启用、位置、文字内容、文字颜色、图片、文字大小等,这些设置都提供了友好的接口设置。
在frmvideopanel.cpp文件中有设置示例,默认注释的,参数含义如下:
x1enum OSDFormat {
2 OSDFormat_Text = 0, //文本
3 OSDFormat_Date = 1, //日期
4 OSDFormat_Time = 2, //时间
5 OSDFormat_DateTime = 3, //日期时间
6 OSDFormat_Image = 4 //图片
7};
8
+ 视频控件已经将OSD标签封装好了,默认提供两路OSD设置,每个OSD都可以设置是否启用、位置、文字内容、文字颜色、图片、文字大小等,这些设置都提供了友好的接口设置。在frmvideopanel.cpp文件中有设置示例,默认注释的,参数含义如下:
- 设置标签可见:setOSD1Visible
- 设置文字大小:setOSD1FontSize
- 设置文本文字:setOSD1Text
- 设置文字颜色:setOSD1Color
- 设置标签格式:setOSD1Format
- 设置标签位置:setOSD1Position
xxxxxxxxxx
141enum OSDFormat {
2 OSDFormat_Text = 0, //文本
3 OSDFormat_Date = 1, //日期
4 OSDFormat_Time = 2, //时间
5 OSDFormat_DateTime = 3, //日期时间
6 OSDFormat_Image = 4 //图片
7};
8
9enum OSDPosition {
10 OSDPosition_Left_Top = 0, //左上角
11 OSDPosition_Left_Bottom = 1, //左下角
12 OSDPosition_Right_Top = 2, //右上角
13 OSDPosition_Right_Bottom = 3 //右下角
14};
3 视频回放
视频回放中有多个子模块,分别是不同的含义:
- 本地回放:回放存储在本地电脑的视频文件。
- 远程回放:通过sdk方式回放NVR上的存储录像(暂未实现,每个厂家不一样)。
- 设备播放:通用的rtsp取流形式的播放实时视频和回放录像文件。
- 图片回放:查找对应文件夹下的所有通道图片,按照设定的间隔回复,类似视频效果,一般用在存储一堆图片序列的应用场景中。
- 视频上传:将查询的本地存储的视频文件上传到云端服务器。类似于将视频文件存储到服务器上,需要手动填写服务器地址和端口。
3.1 本地回放
3.1.1 视频查询
本地回放模块主要用来回放存储在本地电脑上的视频,先从右侧选择要回放的通道,默认是所有通道,然后选择类型:存储视频还是报警视频,默认选择存储视频(目前也只有存储的视频,没有报警视频,报警视频的规则还没定好,一般都是买过去自己定义),然后选择要查询的开始时间和结束时间,单击查询按钮,会自动列出来,双击对应的视频文件名称就会播放,除了查询按钮,其余按钮均没有实现具体功能。
3.1.2 存储规则
- 默认存储主目录 video_normal。
- 主目录下按照日期目录存放 比如 2021-04-07 2021-04-08。
- 日期目录下是单个的视频文件 比如 Ch1_2021-04-07-14-08-11.mp4。
- 拓展功能可以存储对应的数据文件比如经纬度数据和视频文件一个目录 名称一样 拓展名可以是 txt。
3.1.3 视频下载
视频下载是将查询出来的视频文件,按照勾选了的文件保存到选择的目录中。
3.2 远程回放
@@ -787,9 +787,11 @@ header, .context-menu, .megamenu-content, footer{
10.4 linux-deepin
10.5 linux-centeros
10.6 linux-uos
10.7 linux-kylin
-
10.8 unix-mac
+
10.8 linux-neokylin
-
11 程序框架说明
备注:下面的截图和说明未必是最新的,但是大部分是一致的,整体的框架不会改变,可能会有新增加子模块和代码,或者部分类文件有调整或者删除,具体以最新的代码为准。
11.1 整体代码结构
+
10.9 unix-mac
+
+
11 程序框架说明
备注:下面的截图和说明未必是最新的,但是大部分是一致的,整体的框架不会改变,可能会有新增加子模块和代码,或者部分类文件有调整或者删除,具体以最新的代码为准。
11.1 整体代码结构
本系统采用模块化的设备,有用到第三方开源类库比如串口通信qextserialport,全部放在3rd下面,有用到很多自己封装完善的通用类库比如ffmpeg视频监控,全部放在core下面,设备通信和辅助处理全部放在class下面,所有界面全部放在ui下面,相当于一个个小的组件合起来,最终形成了整个监控系统的完整代码。
11.2 主模块说明
名称 说明 3rd 一些第三方开源的类库,比如串口通信qextserialport。 class 存放系统初始化、样式控制、自定义控件、设备通信等。 core 本人一直持续更新完善的通用的类库,比如ffmpeg视频监控。 ui 所有的界面都分门别类放在这里。
11.3 子模块说明
11.3.1 第三方类库
这里放的全部是第三方开源的轮子,感谢开源、感谢github、gitee等开源社区。
名称 说明 3rd_qextserialport 第三方串口通信qextserialport,这个类比较稳定可靠,经过了几十个项目持续数十年运行的考验,不用Qt自带的串口类。
具体代码不做过多说明。
11.3.2 通信及辅助类
这里放的都是一些系统初始化、设备通信相关的类。
名称 说明 api 存放数据库表映射成对应的全局队列数据、通用的辅助函数类。 app 全局配置参数管理类、秘钥管理类、通用函数。 device 设备通信管理,比如机器人通信、无人机通信、人工智能处理等。 flight 飞行套件控件集合。 usercontrol 当前系统的自定义控件全部放在这里,其中包括云台仪表盘、通用视频监控等控件。
11.3.2.1 模块-api
名称 说明 dbdata 将数据库表映射到全局变量数据队列,比如将摄像机表ipcinfo转成QStringList存放一行行数据,这样在程序中运算比较速度极快,直接内存比较,不用每次都去读取数据库。 dbquery 所有的数据库查询插入更新等操作都在这里,比如查询摄像机表、插入日志记录等。 savelog 日志钩子类,将系统中所有的打印信息转为日志存储或者输出到网络等,本系统目前没有用到,后期可以开启用来打印输出日志信息。 saveruntime 保存运行时间类,用来存储系统启动后每隔一段时间就输出一条记录用来记录启动后软件运行了多久,方便分析问题。
11.3.2.2 模块-app
名称 说明 appconfig 配置参数类,整个系统的配置参数存放在ini文件中,跨平台,所有参数都对应一个变量,读取配置参数的时候将值赋值给变量,写入的时候将变量值写入到配置文件。 appdata 全局变量类,系统中无可避免需要一些全局变量方便处理,都放在此类,比如版本号、录像机类型、摄像机类型、当前用户信息、地图宽度高度、左侧右侧顶部底部宽高等。 appevent 全局事件转发类,系统越复杂信号需要传递的层级越多,所以需要一个全局事件转发类,用来中转这些事件,这样永远只需要两层就可以收到信号进行处理,而且整个系统看起来干净整洁,不会说一个信号传递到了N个地方乱七八糟,建议需要跨层级传递的信号都放在这里中转。比如软件退出信号,可能多个界面需要收到退出信号进行保存和其他处理,如果从关闭界面发出信号传递给需要的界面,那不知道要中间层层传递多少次,有了这个全局事件转发类,你只需要将事件传给appevent,需要接收事件的地方关联这个信号就行,appevent为全局单例类,整个系统唯一。通用的一些信号有软件退出、全局样式改变、主窗体变化(0-最小化 1-最大化 2-恢复 3-关闭 4-移动 5-尺寸变化)等。 appfun 通用辅助函数处理,比如系统重启、导入导出数据、校验权限等。 appinit 程序初始化类,在main函数中,会先执行这个初始化的类,比如初始化皮肤、字体、数据库、样式等操作,这些都是要优先在窗体加载前执行的,执行完毕以后再打开窗体主界面。 appkey 秘钥管理类,指定校验秘钥文件,可设置运行时间、设备数量等限制,支持根据硬件指纹特征生成机器码文件等。 appnav 菜单导航管理类,用来控制和显示顶部导航栏、左侧导航栏的样式。很多子界面需要用到,所以封装成一个专门管理这个的类。 appstyle 全局样式管理类,整个系统的样式全部放在这里,一般加载流程是先读取样式表文件,然后将本系统独特的样式(比如开关按钮、视频监控、云台仪表盘)内容追加到后面,最后统一设置全局样式,在main函数中加载,和appinit类一样放在最前面执行。
11.3.2.3 模块-device
名称 说明 devicehelper 整个系统设备管理辅助类,比如插入窗口消息、加载设备列表、加载图片地图、加载设备按钮、初始化视频控件等。 devicemap 设备图片地图管理类,相当于一次性加载所有图片到内存,当要切换或者显示的时候,直接从内存取出来设置即可,速度极快,瞬间相应,纯粹是为了加快相应速度以及可能在图片上进行绘制增加的功能,比从文件系统读取图片文件显示快N倍。 deviceonvif 设备onvif通信管理类,比如获取当前选中通道的onvif地址、开启事件订阅、校对时间、重启设备、获取视频参数、设置视频参数、云台控制等,这里是具体的需要和摄像机信息表及视频通道关联的处理,所以不能放到通用的onvif模块中。 devicerobot 机器人串口通信管理类。 devicerobot2 机器人串口通信管理类2,有串口数据转发功能。 devicesmart 人工智能处理类,最常见的应用就是设置一个视频控件,然后在视频控件上绘制人脸框、文字信息等,比如设备的实时运行状态。 deviceuavsvideo 无人机视频监控类,将视频控件设置过来,然后就可以将自己人工智能算法处理后的图片传过来进行绘制,类似于实时视频效果。
11.3.2.4 模块-flight
飞控套件集合,具体代码不做过多说明,具体可购买自定义控件大全参见演示示例。
11.3.2.5 模块-usercontrol
名称 说明 gaugecloud 云台仪表盘控件。 squarelayout 正方形布局控件,所有飞机控件都需要用这个布局,不然控件拉伸扁平很难看。 videobox 视频监控盒子控件,用于统一管理视频监控主界面,包括通道切换等。 videoplayback 视频回放控件。 videowidget 通用视频播放控件。 widgetsound 声音面板控件,主界面右下角单击弹出音量条。
11.3.3 核心通用类库
diff --git a/docs/video_system/snap/10-8-1.jpg b/docs/video_system/snap/10-8-1.jpg
index fd1bf8c..3977509 100644
Binary files a/docs/video_system/snap/10-8-1.jpg and b/docs/video_system/snap/10-8-1.jpg differ
diff --git a/docs/video_system/snap/10-8-2.jpg b/docs/video_system/snap/10-8-2.jpg
index dda9a25..4850ff5 100644
Binary files a/docs/video_system/snap/10-8-2.jpg and b/docs/video_system/snap/10-8-2.jpg differ
diff --git a/docs/video_system/snap/10-8-3.jpg b/docs/video_system/snap/10-8-3.jpg
index 4cfd730..8cd2553 100644
Binary files a/docs/video_system/snap/10-8-3.jpg and b/docs/video_system/snap/10-8-3.jpg differ
diff --git a/docs/video_system/snap/10-9-1.jpg b/docs/video_system/snap/10-9-1.jpg
new file mode 100644
index 0000000..4bb6d17
Binary files /dev/null and b/docs/video_system/snap/10-9-1.jpg differ
diff --git a/docs/video_system/snap/10-9-2.jpg b/docs/video_system/snap/10-9-2.jpg
new file mode 100644
index 0000000..97851cb
Binary files /dev/null and b/docs/video_system/snap/10-9-2.jpg differ
diff --git a/docs/video_system/snap/10-9-3.jpg b/docs/video_system/snap/10-9-3.jpg
new file mode 100644
index 0000000..d79ac06
Binary files /dev/null and b/docs/video_system/snap/10-9-3.jpg differ
diff --git a/docs/video_system/snap/QQ截图20210913151203.jpg b/docs/video_system/snap/QQ截图20210913151203.jpg
deleted file mode 100644
index e4ab0ae..0000000
Binary files a/docs/video_system/snap/QQ截图20210913151203.jpg and /dev/null differ