![](https://img-blog.csdnimg.cn/20190808132339180.gif?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt/C++视频监控系统
文章平均质量分 94
本专栏主要用来介绍Qt中的纯widget编写视频监控系统,其中包括通道切换、视频播放、通道交换、面板开关、动态换肤、视频回放等功能,贴出大量的核心代码,详细讲解各个功能模块编写过程遇到的疑难问题解决思路。公众号:Qt实战/Qt入门和进阶
feiyangqingyun
欢迎关注公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发)
展开
-
Qt/C++编写安防视频监控系统文章导航
文章链接1-通道切换https://qtchina.blog.csdn.net/article/details/905113232-视频播放https://qtchina.blog.csdn.net/article/details/905234083-通道交换https://qtchina.blog.csdn.net/article/details/905526994-删除视频https://qtchina.blog.csdn.net/article/detai...原创 2021-11-15 08:51:57 · 3439 阅读 · 0 评论 -
Qt/C++编写视频监控系统83-自定义悬浮条信息
一般视频控件上会给出个悬浮条,这个悬浮条用于显示分辨率或者一些用户期望看到的信息,一般常用的信息除了分辨率以外,还有帧率、封装格式、视频解码器名称、音频解码器名称、实时码率等,由于实际的场景不一样,用户希望能过自定义勾选开启哪些信息,开启的就显示,不开启的则可以不用显示,这样也方便节约空间甚至节约CPU占用,比如实时码率大部分时候是不需要的,而计算实时码率在采集数据的时候就需要不断运算累加,需要的时候开启不需要的时候不开启,这样也能避免不必要的计算。原创 2024-01-13 14:01:00 · 1507 阅读 · 2 评论 -
Qt/C++编写视频监控系统82-自定义音柱显示
通过音柱控件实时展示当前播放的声音产生的振幅的大小,得益于音频播放组件内置了音频振幅的计算,可以动态开启和关闭,开启后会对发送过来的要播放的声音数据,进行运算得到当前这个音频数据的振幅,类似于分贝,分贝越大,听到的声音越大,振幅越大。在如何摆放音柱控件这个问题上,考虑过多种方案,比如一开始做的是固定放在视频控件的右侧,也就是在一个垂直布局中先放一个视频控件,然后放左通道音柱,最后放一个右通道音柱,三个控件之间设置好间距。原创 2024-01-03 09:31:55 · 1692 阅读 · 2 评论 -
Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放
视频监控系统中的图文警情模块,是通过Onvif协议的事件订阅拿到的,通过事件订阅后,设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等,触发后都会主动往订阅者发送,而且一般都是会发送两次,一次报警开始,一次报警结束,每一种事件都对应有文字字符协议的约定,所以可以搞个字典表,哪种英文表示哪种报警字样,方便区分,因为可能有厂家有自己定义的协议,如果写死在程序中,后期需要增删改那就不方便了,所以搞个记事本文件或者json文件专门存储这个字典表,用户可以打开进行修改。原创 2023-08-31 09:15:31 · 2884 阅读 · 0 评论 -
Qt/C++编写视频监控系统80-远程回放视频流
远程回放NVR或者服务器上的视频文件,一般有三种方式,第一种是调用厂家的SDK,这个功能最全,但是缺点明显就是每个厂家的设备都有自己的SDK,只兼容自家的设备,如果你的软件需要接入多个厂家的,那就意味着要写好多套SDK接入。而且一般厂家提供的SDK只有win的居多,少部分大厂还提供了linux的,但是基本上都是X86的,如果你要是国产系统或者硬件,那就全部歇菜。原创 2023-08-27 08:21:05 · 1544 阅读 · 0 评论 -
Qt/C++编写视频监控系统79-四种界面导航栏的设计
最初视频监控系统按照二级菜单的设计思路,顶部标题栏一级菜单,左侧对应二级菜单,最初采用图片在上面,文字在下面的按钮方式展示,随着功能的增加,二级菜单越来越多,如果都是这个图文上下排列的按钮,那左侧高度空间不够,比如在笔记本1366x768的分辨率上,左侧如果有七八个菜单按钮,那就摆不下了,会把界面撑大导致有些界面看不到,在一整个屏幕上看不全,所以才想着把导航菜单设计成了动态展示的方案,根据菜单的名字,自动生成对应的菜单按钮,图片位置可选是在上面还是在左侧,所以产生了四种菜单排列组合,上侧+上侧,上侧+左侧,原创 2023-06-16 09:46:28 · 4262 阅读 · 0 评论 -
Qt/C++编写视频监控系统78-视频推流到流媒体服务器
视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务器拉取视频流地址,相当于订阅分发,可以多路,按照需要处理,谁需要谁就去订阅拉取,这样功能独立开来,而不是将分发功能做在视频监控系统上,大大减轻视频监控系统的压力,至于到底是谁到底拉取多少路,不需要监控系统操心,由流媒体服务器专心做这个事情就可以了,而且现在很多流媒体服务器都用go编写,有个巨大的优势好处就是go天生高并发原创 2023-06-06 08:39:06 · 2620 阅读 · 0 评论 -
Qt/C++编写视频监控系统77-Onvif组件支持非正常时间的设备
在经历了大量的现场设备测试,至少几十种厂家、几百种设备,遇见过奇奇怪怪的问题,一个个想方设法解决,发现有个问题是在下发鉴权的时候,需要带上设备的时间,而不是发送端的时间,如果带的不是设备上的时间很可能鉴权失败。原创 2023-05-30 09:16:10 · 993 阅读 · 0 评论 -
Qt/C++编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现
在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议,工具的名字叫ONVIF Device Manager(还有个工具叫ONVIF Device Test Tool,专用于程序员测试各种数据交互),可以自行搜索下载,此工具位国际官方工具,如果此工具搜索不到摄像机,则说明该摄像机不是真正的onvif摄像机,不是标准的摄像机,目前市面上的绝大部分网络摄像机都支持onvif。具体用法可以参考。原创 2023-05-28 13:07:51 · 2135 阅读 · 0 评论 -
Qt/C++编写视频监控系统75-计算实时码率并显示
做监控摄像头的实时视频显示,一般还会要求统计实时码率显示在通道画面上,一个是为了测试下整个软件的性能,同时也看下当前到底是主码流还是子码流,设备到底是不是真的按照设定的码流大小来传输视频数据的。视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。原创 2023-05-25 08:43:26 · 2033 阅读 · 0 评论 -
Qt/C++编写视频监控系统74-悬浮工具栏(半透明/上下左右位置/自定义按钮)
在监控系统中一般在视频实时预览的时候,希望提供一个悬浮工具条,可以显示一些提示信息比如分辨率、码率、帧率,提供一堆快捷操作按钮,可以录像、抓拍、云台控制、关闭等操作,参考了国内很多监控厂商客户端软件,总结下来基本就是悬浮条可以半透明悬浮在通道窗体上,也有少部分是固定嵌入在底部,个人觉得还是悬浮在顶部最为通用便捷,视频预览通道控件主要是用来预览的,应该尽量保证最大化的显示视频,所以采用悬浮的方式最佳,鼠标移动过去自动显示,移出去后自动隐藏,而且半透明的效果保证工具条出来的时候还能看到被遮住位置的画面。原创 2023-05-23 09:51:17 · 2379 阅读 · 1 评论 -
Qt/C++编写视频监控系统73-不同视频流不同类型的判断和解析(http/m3u8/rtsp/rtmp等)
这套视频监控系统大概从2018年起步整体框架,一步步积累到现在,中间经历了无数次的各种视频文件、视频流、视频设备的播放测试,比如光视频文件就有mp4/wmv/rmvb/mkv/avi等格式,视频设备有本地USB摄像头、桌面等,视频流有rtmp/rtsp/rtp/http等,其中http开头的就有视频文件和视频流两种,就算是http开头的m3u8格式的,也可能是视频文件或者视频流,所以要有一个统一的标准来定制该地址对应的是视频文件还是视频流,视频文件是有文件时长的,意味着可以拖动进度条,而视频流是没有文件时长原创 2023-05-17 09:20:25 · 2031 阅读 · 0 评论 -
Qt/C++编写视频监控系统72-通过onvif增删改查OSD
之前监控系统中原创的onvif协议解析机制,已经能够满足绝大部分用户的需要,比如搜索设备、获取视频流地址并播放、云台控制、预置位管理、图片亮度色彩饱和度等参数设置等,近期又多了一个需求,那就是通过onvif国际标准协议来对摄像头的OSD进行增删改查,可以通过协议添加OSD、删除OSD、修改OSD、查询所有OSD集合信息等,在早期的厂家监控设备,很多厂家是不支持该协议的,所以一直也没有去实现,目前测试下来是几个大厂比如海康大华宇视天地伟业等实现了,仅限于官方的标准过检的设备,如果是一些冒牌的设备,尽管后台看起原创 2023-05-12 09:21:57 · 1984 阅读 · 0 评论 -
Qt/C++编写视频监控系统71-外网访问摄像头等设备(获取各种信息及拉流)
最近遇到个需求是通过外网接入摄像机或者NVR,通用的做法是将视频流推流到服务器,然后拉取rtmp视频流,这样就多了服务器的要求,而且实现的功能有限比如不能直接用onvif协议对设备获取信息和配置信息,还有个做法就是将设备直接通过路由器端口映射到外网,根据外网的IP地址和端口对应填入即可。先不考虑安全问题,因为现在设备厂家几乎对安全性做的比较好,登录和onvif交互等,都需要用户验证,甚至还可以开启https机制。原创 2023-02-16 15:34:39 · 2391 阅读 · 0 评论 -
Qt/C++编写视频监控系统70-OSD标签和图形信息(支持写入到文件)
作为一个完整的视频监控系统,用户还需要自定义一些OSD标签信息显示在对应通道上面,而且不止一个OSD标签信息,位置可以在四个角或者指定坐标显示。原创 2023-02-13 09:05:26 · 2151 阅读 · 6 评论 -
Qt编写视频监控系统(移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等)
得益于标准的onvif协议,各大监控厂商的设备都会支持onvif协议,在onvif协议中就包括了事件订阅机制,通过这个机制,可以拿到各种报警事件,比如移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等,这样就不用自己去搞算法识别,相当于前端设备在后台配置好以后都自己运算掉,客户端这边就没有什么压力,分散在各个前端设备去处理,和有个高大上的名词叫什么边缘计算类似。原创 2022-12-10 17:27:45 · 4645 阅读 · 6 评论 -
Qt视频监控系统一个诡异问题的解决思路(做梦都想不到)
由于Qt版本众多,几百个版本之间存在不兼容的情况,为此如果要兼容很多版本,没有取巧的办法和特殊的捷径,必须自己亲自安装各个版本编译运行并测试,大问题一般不会有,除非缺少模块,小问题还是不断有的,很多时候可能是上一个版本还是正常的,下一个版本同样的地方就出现了BUG,一般这类情况就两个答案,要么自己的代码健壮性不够兼容性不好,需要慢慢调试找到兼容之法,要么这是Qt官方新增的BUG,这个可以自己去Qt官方BUG网站查询有没有人也遇到过,一般老外在上面比较活跃,新版本发布后新增的BUG,不出半年基本上都会有提问,原创 2022-12-01 15:48:24 · 4732 阅读 · 3 评论 -
Qt/C++编写视频监控系统69-录像计划(支持64通道7*24录像设置)
录像计划这个功能一直挂了很久,之前做的也都有保存视频文件功能,其中还分了三大种,第一种是手动开启和停止录像;第二种是按照指定时长比如10s保存文件;第三种是定时30分钟一个文件一直保存。原创 2022-11-30 10:21:11 · 2538 阅读 · 6 评论 -
Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)
海康大华等厂家自己的客户端软件,基本上都是支持自家的设备,不支持其他家的摄像机和硬盘录像机,并不是因为技术上做不到,这些大厂要实现支持兼容其他的家的(他们家的服务端或者收费的都是支持其他家的),那都是分分钟的事情,无非就是走通用的标准onvif+rtsp+gb28181,为何目前客户端不兼容其他家的,可能也是由于商业角度考虑,这样可以最大化的绑定自家的硬件一起,毕竟客户端都是免费使用的,仅仅用他们免费的客户端而不用他们的硬件,那就没有太大意义。原创 2022-11-26 17:02:49 · 6959 阅读 · 0 评论 -
Qt编写跨平台视频监控系统(64通道占用7%CPU/支持win_linux_mac等)
视频监控组件经历过数十年的迭代,从最初的只简单播放个rtsp视频流,到现在支持各种音频视频文件格式(mp3、wav、mp4、asf、rm、rmvb、mkv等)、支持各种视频流格式(rtp、rtsp、rtmp、http等)、支持本地摄像头设备等。后面又陆续搞了音视频同步,硬解码、音视频文件保存等,陆陆续续完善了很久,再到后面搞了共享解码线程,打开相同地址的16路1080P主码流,CPU占用从70%降到了5%,这个提升是巨大的,和我追求极致完美的代码追求相符合,当然做不到完美,但是尽可能做到比以前更好。原创 2022-11-24 09:23:50 · 2990 阅读 · 2 评论 -
Qt/C++项目作品01-视频监控系统/onvif搜索/云台预置位/录像存储回放
Qt/C++国产系统上的视频监控系统/统信UOS/银河麒麟。原创 2020-01-12 15:09:30 · 23814 阅读 · 8 评论 -
Qt/C++编写安防视频监控系统(支持win/linux/mac/海康/大华/宇视/264/265等)
一、前言视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸识别的东风,发展更加迅猛,人脸识别相关的技术和应用这几年处于风口浪尖,衍生了特别多的应用产品,各种人脸识别的产品遍地开花,刷脸门禁,车站机场人脸识别,刷脸取票等,但是其实大部分内行人士可能都比较绝望,外行感觉像看科幻片一样...原创 2019-05-23 17:31:43 · 48020 阅读 · 24 评论 -
这可能是跨平台最多的视频监控系统
欢迎关注公众号:Qt实战/Qt入门和进阶,获取最新文章推送学习。原创 2021-09-20 11:56:13 · 872 阅读 · 0 评论 -
Qt/C++编写安防视频监控系统68-兼容Qt4到Qt6
一、前言为了从Qt4.7兼容到Qt6.2及后续版本,着实花了不少精力,前提也是对自定义控件大全和各种跨平台的轮子组件全部做成了兼容Qt4到Qt6,这样只剩下UI这块需要兼容就好办多了,各个击破战略,由于最开始就是从Qt4开始学习Qt的,所以对于旧版本的Qt的写法非常熟悉,新版本的Qt的写法也慢慢适应,为了兼容各种Qt版本,代码量增加不少,里面各种#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))针对Qt版本的判断然后执行对应的代码,发现Qt版本的升级趋势大致是新增原创 2021-09-17 08:07:33 · 1990 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统67-跨平台及国产系统
一、前言得益于Qt的超强跨平台特性,本系统也是跨平台的,亲测的系统包括windows全系列、ubuntu全系列、centeos、国产系统UOS、国产系统银河麒麟、中标麒麟、嵌入式linux、树莓派、香橙派等,所有的外观统一,由于默认采用的sqlite数据库(视频监控系统要存储的记录很少,用Qt内置的数据库sqlite是最合适的),所有数据库这块也不用担心其他平台移植的问题,毕竟Qt内置的sqlite数据库都有。整个视频监控系统针对特定系统平台的不同处理代码不多,由于前期花了大量的精力整理了跨平台的自定义原创 2021-09-15 20:01:24 · 2982 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统66-子模块10网页浏览
一、前言网页浏览模块,用于传入一个网页地址,打开对应的网页进行浏览,可用于网页展示信息,支持多个,可以自行增加,代码中演示了一个。此模块的用途属于添砖加瓦润色用的,比如有一个牛逼的3D网页,机器人、医疗骨骼、3D建筑等,非常精美漂亮,这种一般是js实现的,可以利用现有的网页模块,放个浏览器控件加载就行,还支持交互,在展示的时候起到一个增色的两点,也许大BOSS看了以后立马就高兴了,视觉刺激以后资金就来了。对于浏览器控件,在Qt4时代用的是qwebkit,Qt5.6以前用的也是webkit,而且还独立出来原创 2021-09-09 15:40:51 · 1526 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统65-子模块9数据调试
一、前言数据调试模块,用于显示通信串口的数据,自定义不同颜色显示,可以勾选过滤某个串口进行数据查看,也可以选择所有数据,还可以勾选暂停显示复选框用来暂停打印显示信息。数据调试可以很方便的查看串口收发数据,以便查证数据通信是否正确,特别是可以规避一些扯皮的问题,比如上位机下位机双方都是按照数据约定来编写程序,但是联调的时候突然发现没有按照约定的流程走下去,此时就可以打开数据调试模块,看下收发的数据是否符合规约,有时候也许下位机就是按照规约来编写的,但是中间有电平干扰导致数据发生了突变,都是有可能的,比如本人原创 2021-09-07 16:59:32 · 3499 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统64-子模块8飞行轨迹
一、前言飞行轨迹子模块是专为无人机打造的模块,也可以作为机器人移动模块,通过传入一个经纬度值,实时更新设备的位置和绘制轨迹,模块已经内置了接口进行处理,支持不同设备不同的轨迹颜色(这个功能好)。这个模块的关键在百度地图封装类,设备可以指定对应的图标比如无人机图标,飞行轨迹其实就是绘制addPolyline添加线条,每个设备都对应自己的一个线条路径坐标点集合,如果单纯的只是需要现在现在的位置则只需要move移动过去就行,要绘制轨迹就必须记住之前的路径坐标点集合,在绘制的时候一块传入进行绘制,这个绘制速度是原创 2021-09-03 10:37:49 · 1931 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统63-子模块7悬浮地图
一、前言悬浮地图子模块,使用的百度地图,支持在线和离线,用于显示对应设备的位置,支持鼠标直接拖动和缩放。本系统将各个地方需要的地图模块+浏览器模块都合并到一个地图内核模块,这样需要使用的时候只需要new这个地图内核模块就行,而不是写的到处都是,比如有些通用的公用的参数,只需要在地图内核模块中设置即可。目前显示瓦片地图采用的浏览器模块来展示,优点是编写方便,直接用现成的公开的百度地图瓦片地图加载,缺点是依赖浏览器模块,相对比较臃肿,有些嵌入式板子性能有限,搞个浏览器模块直接累死,所以还有一种方式是采用瓦片原创 2021-09-01 07:55:39 · 1306 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统62-子模块6预置位
一、前言预置位功能,只对带有预置位的球机才起作用,有云台的球机未必有预置位,要仔细查看清楚,不清楚可以询问厂家或者查阅手册,在本模块中,可以获取预置位、添加预置位、调用预置位、删除预置位、调用起始位、设置起始位、开始巡航、停止巡航等。获取预置位以后,会将获取到的预置位集合(一般有255个甚至更多)显示到列表中,前面是编号token,后面是预置位的别名name,别名可以是中文的,可以通过添加预置位的时候设置中文的名称。添加、调用、删除预置位之前要先从预置位列表中选中一个预置位。自动巡航目前采用的策略是通原创 2021-08-25 08:05:22 · 1417 阅读 · 4 评论 -
Qt/C++编写安防视频监控系统61-子模块5设备控制
一、前言设备控制模块,和云台控制模块都是用的onvif协议通信,可以对选中的通道的摄像机(ONVIF协议),进行获取参数、设置参数、手动校时、重启设备、抓拍图片、模拟报警等操作,可以对摄像机的明亮度、对比度、饱和度进行设置。后期还可能不断增加新的功能。获取图片参数 getImageSetting。设置图片参数 setImageSetting。图片参数包括明亮度、对比度、饱和度、锐度。手动校时,手动设置当前电脑时间给设备。重启设备,通过onvif协议远程重启设备。抓拍图片,onvif抓图,大部原创 2021-08-22 17:02:14 · 1317 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统60-子模块4云台控制
一、前言云台控制是一个很老很基础的模块了,视频监控系统中必备的特殊模块之一,可以对选中的通道的摄像机(ONVIF协议),进行云台控制,可以控制球机的上下左右等各个方位的移动,还可以调节变倍步长,至于变焦和光圈,目前onvif协议中没看到对应的协议支持,没有实现。云台移动总共有3种策略:绝对移动、相对移动、连续移动,本系统都支持三种策略,默认采用的连续移动,这也是大部分应用场景需要的,按下对应的方位进行移动,松开立即停止移动,非常人性化。云台说明x、y、z 范围都在0-1之间。x为负数,表示左转,原创 2021-08-19 08:13:35 · 1874 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统59-子模块3图文警情
一、前言图文警情子模块是为了适应现在各种人脸识别报警应用而增加的,参照现在各种视频监控手机app报警提示信息,基本上都是带了时间、内容、图片缩略图(单击可以查看大图),这种信息排列形式在现代的软件中应用越来越多,弥补了窗口信息的局限性。图文警情模块负责以图文的形式显示对应的警情或者提示信息,有时间、内容、图片,双击对应图片可以放大查看具体图片,为了方便演示如何使用,在此模块增加了右键菜单,可以添加消息、删除消息、清空消息。要实现这种图文警情模块,Qt实现还是很方便的,有人说qml是分分钟,其实widge原创 2021-08-17 07:52:30 · 1472 阅读 · 5 评论 -
Qt/C++编写安防视频监控系统58-子模块2窗口信息
一、前言窗口信息一般用来打印输出文字信息,带时间,有些用户场景可能除了时间和内容以外,还需要其他的字段信息,可以自行在代码中增加字段即可,窗口信息一般以表格样式居多,上面是字段标题,下面是一行行的输出内容,在经历过很多个项目以及很多用户的反馈,总结了几点窗口信息用户体验比较好的地方,比如行数自适应,之前多个项目做得都是用户手动选择行数,设置还针对不同的分辨率进行不同的行数计算,但是这个又和用户设定的行数冲突了,后面发现所有的用户其实都是傻瓜和懒惰的,根本不会去设置,你默认是啥就是啥,至于你说的交给用户设置原创 2021-08-15 09:02:04 · 1190 阅读 · 2 评论 -
Qt/C++编写安防视频监控系统57-子模块1设备列表
一、前言近期在经历过这次UI大重构以后,很多拆分的功能都以单独的模块的形式出现,以悬停窗体的形式嵌入或者悬浮在主窗体中,这种方式极大的增强了系统的拓展性,客户想要什么模块就开启什么模块,放置到合适的位置,布局方案会自动保存,而且还可以针对不同的工作模式加载不同的悬停模块。有不少的软件都是这种组织形式,比如全宇宙第一的VS开发工具,就是各种停靠子窗体,第一次用VS的时候,觉得这玩意真好玩,拖来拖去还可以自动合并,真佩服当初设计者们,在有限的空间里面放置更多的功能操作面板窗体,而且还非常灵活,任意拖动交叉合并原创 2021-08-11 09:09:18 · 1480 阅读 · 1 评论 -
Qt/C++编写安防视频监控系统56-数据库分页
一、前言在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页显示,一页显示十几条记录。数据库的分页算法,大部分人都会选择用select查询结果limit关键字来过滤结果,其实未必所有数据库都支持limit关键字,对应Qt应用程序最常用的sqlite+mysql数据库都是用limit关键字以外,比如sqlserver数据库采用offset 4 rows fetch nex原创 2021-08-09 08:39:49 · 2718 阅读 · 2 评论 -
Qt/C++编写安防视频监控系统55-布局方案
一、前言这是近期对视频监控系统做得最大的改动,采用了QMainWindow停靠窗体悬停窗体,极大的增强了拓展性,主界面中的各种小模块全部采用了悬停模块,最后不同的工作模式、不同的运行状态(全屏状态、普通状态)都保存成不同的布局,布局方案沿袭可视化大屏系统中的处理模式,也正是因为有了大屏系统的停靠窗体布局经验,才将这个成功的经验移植到视频监控系统中,久经考验和经过大量的用户体验一致好评,刚好也可以解决不同工作模式下对应灵活加载不同模块的疑难杂症。本系统主界面采用QMainWindow停靠窗体模式设计,这样原创 2021-08-05 14:58:35 · 2067 阅读 · 2 评论 -
Qt/C++编写安防视频监控系统54-轮询配置
一、前言视频监控系统中少不了用到视频轮询,按照设计的基本原则,先满足基本的用户需求,稳定跑起来,再去折腾更复杂的应用场景,于是本系统也做了个基本的视频轮询功能,可以设置轮询方案,给某个轮询方案设置轮询的地址列表,再多了个人性化的东西就是批量生成视频地址,大量的现场应用表明,某个区域安装的摄像机基本上是同一个厂家的,意味着格式一样,所有可以选择这个固定的格式进行批量的生成,按照设备的IP地址递增就行,这样不仅可以从摄像机信息表中添加视频地址作为轮询的地址,也可以自定义的批量生成,还能生成本地视频文件用于测试原创 2021-08-03 15:44:11 · 1970 阅读 · 2 评论 -
Qt/C++编写安防视频监控系统53-串口配置
一、前言视频监控系统中,除了核心的显示实时视频以外,可能还需要配合串口网络通信之类的,用于通过指令数据收到和硬件交互,比如机器人监控系统中,除了实时显示机器人移动监控画面以外,还通过多个串口和下面的机器人在通信,发出指令让机器人做出相应的处理,接收机器人当前状态的数据解析显示,同时还接收机器人遥控控制台发来的指令转发到其他串口,这就需要对这些串口单独做一个串口配置参数,可以分别设置每个串口的串口号、波特率,一般也就这两个参数需要设置,绝大部分的应用程序在串口通信这块也只有这两个参数需要修改,至于停止位、校原创 2021-08-01 20:40:21 · 1546 阅读 · 7 评论 -
Qt/C++编写安防视频监控系统52-颜色配置
一、前言在系统打印日志或者窗口信息栏中,各种临时打印信息都显示在这里,很多时候我们还需要对特定的类别的信息突出颜色显示,比如告警信息,甚至对不同的告警级别的信息还可以分别不同的颜色显示,这样看起来会显得更人性化,如果全部是一种颜色显示,没有区别对待不同的消息类型,用户会来不及及时发现警情等,造成遗漏漏报事故。于是需要提供一个专门进行颜色配置的参数,颜色值可以用Qt内置的颜色值名称,在颜色设置的界面中提供颜色下拉框供用户下拉选择,选择完成立即应用,在下一次消息到来的时候就直接应用。临时警情消息栏采用QTa原创 2021-07-31 13:24:07 · 1455 阅读 · 3 评论