• 38阅读
  • 0回复

兢兢业业勤勤恳恳写了十几年/纯Qt编写的视频监控系统新增功能总结/走到今天真不容易/支持国产系统和CPU [复制链接]

上一主题 下一主题
离线liudianwu
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 昨天 15:14


## 一、前言说明
从第一个版本到今天,视频监控系统总共持续了至少十二年的时间,一个程序员又有多少个十二年经得起折腾,这个项目是本人写过的最复杂、功能知识点最多、文档最全、持续时间最久的一个,也是写的最好的一个,光手册文档都写了三个多月,文档中的文字都是一个字一个字敲出来的,项目中的代码也是自己一行行亲自写出来的,并经过不断的迭代,文档也一直在更新,尽量和最新的项目代码功能保持一致,有时候在想,如果这个项目开源了,估计也会是一个不错的项目,对标推流行业的wvp项目,开源后得到了非常快速庞大的发展,在搞web音视频开发行业应该是无人不知无人不晓。道理都懂,但有些时候必须经过一个权衡利弊,现阶段还要赚钱养家,等哪天财务自由了,肯定都开源出去,或者至少搞个基础版或者早期版本开源。

## 二、新增功能
### 2.1 界面重构
重构了整个界面框架,采用悬停子窗体,可以任意拖动位置摆放,自动记忆最后的布局,之前是写死的位置,不够灵活,随着场景的增加,不同的子模块界面越来越多,用户需要自己摆放位置,以及不同的场景对应不同的主界面。



### 2.2 共享解码
之前每个通道都是打开自己的地址,采集解码并显示,增加共享解码后,如果是重复的地址,则复用采集解码,内部自动处理好,自动复用解码,可以极大节省资源占用,16个通道打开同一个地址,只有有一路采集,其他都是复用的视频画面。


### 2.3 多级分组
之前是固定的两级分组,第一级节点是NVR,第二级节点是IPC,做法简单粗暴,实际情况很多都是需要多级分组,自定义任意层级分组,所有全部重构了相关代码,用户可以任意自定义层级分组。



### 2.4 辅屏预览
之前所有画面都是在主窗体中,最大64路实时画面预览,现在很多场景都是多个屏幕,用户希望在多个屏幕打开不同的多个画面,一方面增加同时预览的画面数,一方面不同用户负责查看不同的屏幕,适应实际需求,于是在主界面底部快捷栏增加了辅屏预览的按钮,每次单击则弹出新的预览画面,用户拖动打开需要的画面,然后拖动到需要的屏幕即可,这样可以实现同时打开几百路画面预览。



### 2.5 设备采集
增加了对本地摄像头和本地桌面的采集,支持选择不同的设备和屏幕,可以设置分辨率、帧率、格式等,自动识别有哪些本地摄像头和桌面,自动识别摄像头支持哪些可用的参数。



### 2.6 电子地图
重构了整个电子地图模块,之前做的简单,只支持百度地图,而且就是显示一些设备点,现在可选各种地图内核,比如百度地图是百度坐标系,不支持地球坐标系,每个坐标都需要转换,还未必准确,可以选择天地图,完美支持地球坐标系,而且永久免费,离线可用,同时还有轨迹点移动等功能,非常适合拓展各种场景需求。


### 2.7 其他功能
**新增了几百项功能,调整了上百个细节处理,修复了一百多个小bug。**



## 三、特别说明
1. 本程序相当于是个客户端,并不是服务器程序,而是直接从摄像机或者NVR等设备取rtsp视频流。对标的是海康大华的PC客户端程序。只不过海康大华的客户端默认只支持自家的设备接入,并且一般只有windows版本。而本程序支持各个厂家的设备,并且支持各种操作系统平台比如windows、linux、macos、国产系统、嵌入式linux等。除了基本的视频流外,还支持各种音视频文件和音视频流比如RTMP/HTTP等,同时支持本地摄像头采集和本地桌面采集。
2. 摄像机管理没有限制摄像机的数量,理论上10000路肯定没有问题,就是个数据记录。
3. **程序实时显示界面最大通道数量可以到64路,每个通道都是打开的时候才会去建立连接取视频流,而不是一开始就建立了连接。**
4. 一般屏幕大小显示64路就已经足够,再多就窗口很小,意义不大,除非分辨率很大。如果还需要同时显示到255路,程序中稍作修改即可,这部分功能可以定制。
5. 实时显示具体能支持多少路,和具体的电脑配置有关,亲测1.8G主频8G内存I5子码流64路没问题,总之比海康大华客户端要更优秀。
6. 系统采用onvif协议+rtsp视频流机制,并不限定支持哪家的摄像机,只要符合这两种协议的都支持,市面上99%的网络摄像机都支持这两种基础协议,包括但不限于海康、大华、宇视、天地伟业、华为等各种安防厂家的摄像机。
7. 本系统没有内置人脸识别等任何相关算法,提供的是相关的接口,比如自己的算法识别到人脸区域后,将区域坐标传入视频控件自动绘制。
8. 系统采用纯QtWidget(非qml)编写,解码采用ffmpeg,搜索采用onvif协议,视频播放采用rtsp协议,所有源码开放,没有封装的库。
9. 同时集成了数据库、多线程、串口通信、网络通信、音视频解码/同步/存储、网页地图、界面美化、UI布局等众多知识点。

## 四、相关地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 文件地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_system。
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
快速回复
限100 字节
 
上一个 下一个