Qt/C++编写可视化大屏电子看板系统31-模块9视频监控_qt 多屏幕监控 代码-程序员宅基地

技术标签: Qt/C++大屏电子看板  qt  Qt学习  Qt数据库请求  

一、前言

视频监控模块采用ffmpeg作为解码内核,可以在系统设置中填入一个视频地址,同时支持本地视频文件、USB摄像机、远程onvif摄像机(海康大华等)、网络视频地址,大屏系统中默认有一个视频监控,如果需要显示多个则new多个视频监控模块即可,在本系统中每个最小单元的小模块都是一个类,需要多少个就可以new多少个出来显示,二级模块作为一个悬停窗体嵌入主界面mainwindow,都可以拖动到任意位置自动嵌入。

视频监控模块有多个参数设置,以便用户设置,最开始做的是内置的写死在代码中,后面随着用户场景的变化,留出参数用户设置更灵活,参数如下:

  • 视频拉伸:有些客户需要拉伸填充有些需要等比例缩放;
  • 视频回调:有些板子或者电脑没有opengl或者版本过低需要开启视频回调才能正常绘制图像;
  • 播放音频:开启后会播放视频和视频流中的声音;
  • 视频循环:开启后播放视频完成后会立即重复播放;
  • 超时时间:打开视频的超时时间,有些网络地址需要设置久一点;
  • 通信方式:视频流采用TCP还是UDP协议播放;

视频监控内核功能特点:

  1. 多线程实时播放视频流+本地视频+USB摄像头等。
  2. 支持windows+linux+mac,支持ffmpeg3和ffmpeg4,支持32位和64位。
  3. 多线程显示图像,不卡主界面。
  4. 自动重连网络摄像头。
  5. 可设置边框大小即偏移量和边框颜色。
  6. 可设置是否绘制OSD标签即标签文本或图片和标签位置。
  7. 可设置两种OSD位置和风格。
  8. 可设置是否保存到文件以及文件名。
  9. 可直接拖曳文件到ffmpegwidget控件播放。
  10. 支持h265视频流+rtmp等常见视频流。
  11. 可暂停播放和继续播放。
  12. 支持存储单个视频文件和定时存储视频文件。
  13. 自定义顶部悬浮条,发送单击信号通知,可设置是否启用。
  14. 可设置画面拉伸填充或者等比例填充。
  15. 可设置解码是速度优先、质量优先、均衡处理。
  16. 可对视频进行截图(原始图片)和截屏。
  17. 录像文件存储支持裸流和MP4文件。
  18. 音视频完美同步,采用外部时钟同步策略。
  19. 支持seek定位播放位置。
  20. 支持在线网络音视频文件比如http开头mp4、mp3结尾的。
  21. 可选句柄模式(GPU绘制)、回调模式(QPainter绘制)。
  22. GPU绘制模式同时支持拉伸和等比例绘制。
  23. 支持qsv、dxva2、d3d11va等硬解码。
  24. 硬解码和GPU组合,超低CPU占用,支持64路视频。
  25. 支持安卓和嵌入式linux,交叉编译即可。

公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。

公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。

二、功能特点

  1. 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件。
  2. 子控件包括饼图、圆环图、曲线图、柱状图、柱状分组图、横向柱状图、横向柱状分组图、合格率控件、百分比控件、进度控件、设备状态面板、表格数据、地图控件、视频控件等。
  3. 二级界面可以自由拖动悬浮,支持最小化隐藏、最大化关闭、响应双击自定义标题栏。
  4. 数据源支持模拟数据(默认)、数据库采集、串口通信(需定制)、网络通信(需定制)、网络请求等,可自由设定每个子界面的采集间隔即数据刷新频率。
  5. 采用纯QWidget编写,亲测Qt4.6到Qt6.2任意版本,理论上支持后续其他Qt版本。
  6. 超强跨平台,亲测windows、linux、mac、国产uos、国产银河麒麟kylin等系统,效果完美,同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等。
  7. 同时集成了自定义控件、qchart饼图、echart地图等功能。
  8. 内置多套配色风格样式(紫色、蓝色、深蓝、黑色),默认紫色,自适应任意分辨率。
  9. 可设置系统标题、目标分辨率、布局方案,启动立即应用。
  10. 可设置主背景颜色、面板颜色、十字线游标颜色等各种颜色。
  11. 可设置多条曲线不同颜色,没有设置颜色的情况下内置多套精美颜色随机应用。
  12. 可设置标题栏背景颜色、文字颜色。
  13. 可设置曲线图表背景颜色、文字颜色、网格颜色。
  14. 可设置正常颜色、警戒颜色、报警颜色、禁用颜色、百分比进度颜色。
  15. 可分别设置各种字体大小,比如全局字体、软件名称、标题栏、子标题栏、加粗标签等。
  16. 可设置标题栏高度、表头高度、行高度。
  17. 曲线支持游标、定位线、悬停高亮数据点、悬停显示值。
  18. 柱状图支持顶部(可设置顶端、上部、中间、底部)显示数据,全部自适应计算位置。
  19. 支持平滑曲线,内置多种平滑曲线算法,还支持面积图平滑。
  20. 面积图填充颜色可选多种规则比如单色透明度填充、透明度渐变填充等。
  21. 数据库支持sqlite、mysql、postgresql、oracle、国产人大金仓等数据库。
  22. 主界面直接鼠标右键切换布局、配色方案、关闭开启某个二级窗体。
  23. 自动记忆所有子窗口的大小和位置,下次启动立即应用。
  24. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局。
  25. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏最大化,再次双击还原。
  26. 子模块也可以全屏显示作为一个大屏,这样就可以一个大屏拓展出多个子大屏,放大查看子模块的数据详情,适用多屏展示。
  27. 每个模块都可以自定义采集速度,如果是数据库采集会自动排队处理,后期还可以拓展每个子模块都独立的数据库采集。
  28. 提供系统设置模块进行整体的配置参数设置,效果立即应用。
  29. 提供精美炫酷的大屏地图模块,包括静态图片、闪烁效果、迁徙效果、世界地图、区域地图等,可指定点的经纬度坐标,识别单击响应,可以做地图跳转等,每个点都可以不同的颜色和提示信息。
  30. 除了提供大屏系统外,还将每个模块都做了独立的模块示例界面,每个模块都可以独立学习使用,里面用到的控件也单独做了控件示例界面,方便学习每个控件如何使用。
  31. 非常详细的开发和使用手册,其中包括数据库说明、模块对照图、控件对照图、项目结构、代码说明(精确到每个类)、演示demo、使用方法等。

三、体验地址

  1. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_bigscreen.zip。
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun
  4. 个人主页:https://blog.csdn.net/feiyangqingyun
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
  6. 在线文档:https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/

四、效果图

在这里插入图片描述

五、核心代码

#include "frmmodulevideo.h"
#include "ui_frmmodulevideo.h"
#include "quihelper.h"

frmModuleVideo::frmModuleVideo(QWidget *parent) : QWidget(parent), ui(new Ui::frmModuleVideo)
{
    ui->setupUi(this);
    this->initForm();
}

frmModuleVideo::~frmModuleVideo()
{
    delete ui;
}

void frmModuleVideo::showEvent(QShowEvent *)
{
#ifdef videoffmpeg
    //延时处理不然布局加载后会先显示再隐藏瞬间反复来两次导致隐藏的时候无法暂停
    QTimer::singleShot(200, this, SLOT(open()));
    if (!isLoad) {
        isLoad = true;
    } else {
        videoWidget->next();
    }
#endif
}

void frmModuleVideo::hideEvent(QHideEvent *)
{
#ifdef videoffmpeg
    //界面不可见的时候暂停以节省资源
    videoWidget->pause();
#endif
}

void frmModuleVideo::initForm()
{
    isLoad = false;
    url = AppConfig::VideoUrl;

#ifdef videoffmpeg
    videoWidget = new FFmpegWidget;
    videoWidget->setBorderWidth(0);
    videoWidget->setBgText("");
    //设置拉伸填充图像
    videoWidget->setFillImage(AppConfig::VideoFillImage);
    //设置是否回调,有些嵌入式环境只能用回调
    videoWidget->setCallback(AppConfig::VideoCallback);
    //设置是否播放声音
    videoWidget->setPlayAudio(AppConfig::VideoPlayAudio);
    //设置是否重复播放
    videoWidget->setPlayRepeat(AppConfig::VideoPlayRepeat);
    //设置打开超时时间,一些推流要把时间设置大一些
    videoWidget->setCheckTime(AppConfig::VideoCheckTime * 1000);
    //设置视频流通信协议
    videoWidget->setTransport(AppConfig::VideoTransport);
    //把视频控件加到布局中
    ui->widgetMain->layout()->addWidget(videoWidget);
#endif
}

void frmModuleVideo::setUrl(const QString &url)
{
    this->url = url;
}

void frmModuleVideo::open()
{
#ifdef videoffmpeg
    if (isVisible() && !videoWidget->getIsPlaying()) {
        videoWidget->setUrl(url);
        videoWidget->open();
    }
#endif
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/feiyangqingyun/article/details/123811299

智能推荐

Error:too many padding sections on bottom border.-程序员宅基地

文章浏览阅读8.5k次。异常信息:Error:too many padding sections on bottom border.原因:使用andoridstudio制作.9图错误。 解决只怪我把线画多了。修改后的.9图片 这样问题就解决了..._too many padding sections on bottom border

Django-Redis-程序员宅基地

文章浏览阅读554次,点赞10次,收藏10次。NoSQL:(不支持sql语句)RedisMongoDBkey-value数据库(非关系性数据库)

蓝桥杯实战应用【算法知识篇】-快速排序算法(附Java、Python和C++代码)_蓝桥杯快速排序蓝桥杯java-程序员宅基地

文章浏览阅读189次。快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。快速排序又是一种分而治之思想在排序算法上的典型应用。_蓝桥杯快速排序蓝桥杯java

SQLAlchemy关联表一对多关系的详解_sqlalchemy 一对多-程序员宅基地

文章浏览阅读695次。SQLAlchemy关联表一对多关系的详解_sqlalchemy 一对多

“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)_反向传播算法(过程及公式推导)-程序员宅基地

文章浏览阅读10w+次,点赞1.7k次,收藏4.9k次。自己学习机器学习,深度学习也有好长一段时间了,一直以来都想写点有价值的技术博客,以达到技术分享及记录自己成长的目的,奈何之前一直拖着,近来算是醒悟,打算以后不定时写一写博客,也算是作为自己不断学习,不断进步的记录。既然是写博客,希望自己的博客以后要做到“准确、生动、简洁、易懂”的水平,做到对自己、对读者负责,希望大家多交流,共同进步!言归正传,想起当时自己刚入门深度学习的时候,当时对神经网络的“..._反向传播算法(过程及公式推导)

Unity Shader - 水体交互_unity 水体-程序员宅基地

文章浏览阅读6.4k次,点赞10次,收藏87次。水体交互效果在游戏中是一个很常见的需求,这里简单实现一个可交互的水体。本篇文章主要是介绍水体交互的实现思路,水体的渲染这里就不再详细介绍,网上很多关于水体的渲染方法很多,可以自己百度、Google了解一下,这里不会过多提及。效果图。先放一张最终的GIF效果图!实现思路原理其实非常简单,就是通过粒子系统不断发射带有波纹法线贴图的面片,然后把这些法线渲染一张RenderTexture传输到Water Shader中,然后和Water Normal 叠加即可形成水波效果。实现步骤可以简单分为:简_unity 水体

随便推点

tf.tile,tf.gather,t f.concat,t f .expand_dims,tf.add_n, tf.stack,tf.sparse_to_dense_tf add_n concat-程序员宅基地

文章浏览阅读345次。temp = tf.range(0,10)*10 + tf.constant(1,shape=[10])temp2 = tf.gather(temp,[1,5,9])with tf.Session() as sess: print (sess.run(temp)) print (sess.run(temp2))输出结果[ 1 11 21 31 41 51 61 ..._tf add_n concat

用linux脚本插入10w级的数据数据库为mysql-程序员宅基地

文章浏览阅读177次。插入大量数据到MySQL数据库可以使用以下步骤:准备数据:你需要一个数据文件,包含需要插入的所有数据。每行都是一条记录,字段之间使用适当的分隔符分开。创建数据库:如果没有相应的数据库,请先创建一个。创建表:创建一个表来存储数据。导入数据:使用MySQL的"LOAD DATA INFILE"命令导入数据。该命令可以从文件中快速加载大量数据到MySQL表中。以下是使用bash脚本..._linux sql插入大量数据

腾讯云域名免费SSL证书怎么获取?HTTPS免费配置_腾讯 域名证书-程序员宅基地

文章浏览阅读316次,点赞5次,收藏4次。总之,通过腾讯云免费SSL证书申请教程,您可以轻松为自己的域名获取免费SSL证书,并实现HTTPS的安全配置。同时,结合腾讯云的服务器购买优惠政策,您还可以以更经济的成本搭建起安全、高效的网站环境。腾讯云将为您的域名生成免费的SSL证书,并通过您提供的邮箱发送相关通知。这样,您就成功获取了免费的SSL证书,为您的网站加上了一把安全锁。那么,如何在腾讯云上为自己的域名免费获取SSL证书,并实现HTTPS的安全配置呢?此外,如果您在配置SSL证书的过程中需要购买服务器,不妨关注腾讯云的促销活动。_腾讯 域名证书

R语言ggplot2包绘制双坐标轴图(双Y轴图)实战:两个Y轴分别使用不同的刻度范围_ggplot双侧轴,两侧轴起始高度不一样,数值刻度也不一样-程序员宅基地

文章浏览阅读146次。R语言ggplot2包绘制双坐标轴图(双Y轴图)实战:两个Y轴分别使用不同的刻度范围_ggplot双侧轴,两侧轴起始高度不一样,数值刻度也不一样

优化图像处理中均值和方差计算_图像方差-程序员宅基地

文章浏览阅读7.2k次。图像处理中均值和方差计算优化一、均值和方差的普通优化图像处理中,有时候会需要计算图像某区域的均值和方差。在我之前的博客中《图像比较之模板匹配》,对计算方差有做简化计算的介绍。详细介绍可以参考我之前的博文。在此,我简单的介绍下计算方差的简化方法:按照上述方式计算均值和方差,很多应用场景下都比较合适。但是有两个缺陷:如果均值远大于标准差,意味着方差计算中相减的两个数非常接近,将引入过度舍入的问题; 对于新增加一个统计变量重新计算其均值和方差的时候,需要对所有统计变量再重新计算,做了大量的重_图像方差

openwrt单线多拨_家庭宽带单线多拨VS多线多拨,有啥区别,100M变1000M-程序员宅基地

文章浏览阅读1.9w次,点赞6次,收藏23次。经常折腾网络的人可能都知道多拨,今天就主要来说说多拨这个话题,以及结合自己的一些尝试,给大家做一些分享。喜欢的朋友们、小伙伴们可以关注我,不定时更新家庭网络相关技术,有疑问或者问题都可以评论留言,看到就回复;多拨也就是我们的宽带账号多次PPPOE拨号,拿到多个IP地址。相当于一条宽带变成了很多条。作用:1、可以实现多外网IP,上行和下行网速叠加,使我们的上网更加快速。100M变1000M网。2、使..._单线多拨

推荐文章

热门文章

相关标签