继前一篇文章只有一个播放画面

这次实现了多画面播放 目前调试测试的是4画面播放

由于是在虚拟机里面跑的 4画面的话cpu已经达到了 60-70% 左右 并且画面会丢帧,有时候会出现花屏,可能是由于再虚拟机里面跑的缘故

采用的是ffmpeg软解  QImage渲染方式

网上搜了下 要想降低cpu占用率

可能得 开启ffmpeg硬件加速 ,同时渲染的时候用Qopengl的方式

窗口resize的时候由于是采用了保持视频比例的方式 所以 画面之间会出现黑框

核心代码:

定义的部分都变成数组

play的时候 :原来就一个现在是多个


void MainWindow::play()
{for(auto i = 0;i<MAX_WINDOW;i++){m_decodecThread[i] = std::thread([this](int index){init(index,g_RTSP_URL[index]);decodec(index);},i);m_decodecThread[i].detach();}}

渲染的时候调整对应的坐标

void MainWindow::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setBrush(Qt::black);painter.drawRect(0, 0, this->width(), this->height());int appWindowWidth = this->geometry().width();int appWindowHeight = this->geometry().height();int button_w = ui->buttonplay->geometry().width();int button_h = ui->buttonplay->geometry().height();int intpu_w = ui->groupInput->geometry().width();int input_h = ui->groupInput->geometry().height();auto center_x = (appWindowWidth-button_w)/2;auto center_y = (appWindowHeight-button_h-50);ui->buttonplay->setGeometry(center_x, center_y, button_w,button_h);center_x = (appWindowWidth-intpu_w)/2;center_y = (appWindowHeight-input_h-120);ui->groupInput->setGeometry(center_x, center_y, intpu_w,input_h);if(m_run_flag == false){return ;}for(auto i = 0;i<MAX_WINDOW;i++){if (m_image[i].size().width() <= 0){continue;}//比例缩放QImage img = m_image[i].scaled(this->size()/2,Qt::KeepAspectRatio);int x = this->width() - img.width();int y = this->height() - img.height();if(i%2 == 0){x = 0;}else{x = this->width()/2;}if(i<MAX_WINDOW/2){y = 0;}else{y = this->height()/2;}//x /= 2;//y /= 2;//QPoint(x,y)为中心绘制图像painter.drawImage(QPoint(x,y),img);}}

QT ubuntu下 多画面视频监控播放器rtsp播放器相关推荐

  1. Qt编写安防视频监控系统2-视频播放

    一.前言 视频播放功能是核心功能之一,为了统一管理接口,统一封装成一个控件,对外提供seturl open close方法即可,不用去管内部的具体处理,这样就可以提供多种接口来实现统一的管理,比如vl ...

  2. 解决ubuntu下kazam录制视频无法在windows播放问题

    记录贴 Kazam是ubuntu下一个功能性截屏软件,但是在使用的过程中,发现Kazam录屏的视频能够在QQ发送,但是只能播放,不能下载,window下也不能播放. 查找了一些资料发现是其他平台Kaz ...

  3. Qt/C++编写安防视频监控系统3-通道交换

    一.前言 最开始写通道交换的功能的时候,走了很多弯路,比如最开始用最初级的办法,触发交换的时候,先关闭视频,然后设置新的url重新打开视频,这样处理非常低级而且耗内存还卡还很慢,毕竟重新打开视频都需要 ...

  4. Qt/C++编写安防视频监控系统27-GPU显示

    一.前言 之前用ffmpeg解码的时候,已经做了硬解码的处理,比如支持qsv.dxva2.d3d11va等方式进行硬解码处理,但是当时解码出来以后,还是重新转成了QImage来绘制,这样就大打折扣了, ...

  5. Qt/C++编写安防视频监控系统20-录像机管理

    一.前言 录像机管理模块,在本系统中除了用来存储NVR信息以外,方便生成对应的摄像机树状列表,目前没有其他用处,一个考虑是为了方便后期拓展,比如改成SDK内核加载视频流和回放视频等,甚至还需要做一些人 ...

  6. Qt/C++编写安防视频监控系统45-图文报表

    一.前言 图文报表对应以前的文字报表,以前的日志查询后,需要打印或者导出,都是一行行的文字记录,近期需要图文警情记录打印和导出,于是彻底趁机将之前的数据导入导出(xls/pdf)及打印组件彻底改造重写 ...

  7. Qt/C++编写安防视频监控系统14-本地回放

    一.前言 在上一篇文章将视频文件存储好了,需要提供界面方便用户查询视频文件进行回放,其实这个回放就是播放历史存储的视频文件,并不是什么高大上的东西,视频回放在这个系统中分三种,第一种是本地回放,回放存 ...

  8. Qt/C++编写安防视频监控系统54-轮询配置

    一.前言 视频监控系统中少不了用到视频轮询,按照设计的基本原则,先满足基本的用户需求,稳定跑起来,再去折腾更复杂的应用场景,于是本系统也做了个基本的视频轮询功能,可以设置轮询方案,给某个轮询方案设置轮 ...

  9. Qt/C++编写安防视频监控系统48-视频参数

    一.前言 视频参数之前在基本参数中,后面越来越多,直接独立了出来,甚至还拆分出来了视频参数1.视频参数2,参数越来越多分组也越来越多的时候,你会发现分组名称都不够用或者不方便命名,不能直观的表示该分组 ...

  10. Qt/C++编写安防视频监控系统37-onvif预置位

    一.前言 预置位在视频监控系统中是不可或缺的存在,响应预置位功能的前提是要带预置位的云台球机,有些普通的云台球机其实不带预置位的,这个要检查清楚,硬件上不支持该功能的,你再怎么点也没反应.在这个视频监 ...

最新文章

  1. MATLAB【四】 ————批量适配图片信息与excel/txt等文档信息,批量移动拷贝图片,批量存图片中点和方框
  2. SpringMVC学习二
  3. 安卓第八夜 玛丽莲梦露
  4. python monkey_解决python调用monkeyrunner的各种各样问题
  5. C++中static关键字作用
  6. python数学要求_python数学工具之积分(1)
  7. 什么是跨域?跨域如何解决
  8. Highcharts x轴为时间时,设置plotBands
  9. Golang实践录:反射reflect的一些研究及代码汇总
  10. ebs开发入门 oracle 知乎_微信小程序云开发入门第一篇---开发准备事项
  11. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解
  12. Python基础——全局变量与局部变量
  13. html2canvas 像素,html2canvas 如何生成高清图片?
  14. 《SQL注入攻击与防御》读书笔记
  15. SAS (Statistics Analysis System) 统计分析系统软件
  16. 接口测试简介以及接口测试用例设计思路
  17. 微信小程序tabbar消失_微信小程序tabBar 返回tabBar不刷新页面
  18. 非线性最小二乘求解方法总结
  19. Ribbon整合Eureka报错no instances available
  20. python如何导入excel表格_使用Python读取电子表格中的数据

热门文章

  1. VC++设置默认音频设备(附源码)
  2. 网页上透明FLASH代码详解
  3. python 多线程爬取网络小说
  4. Excel表格的35招必学秘技
  5. 基于Java+SpringBoot+Thymeleaf+Mysql多用户B2C商城平台系统设计与实现
  6. LibFetion 应用程序
  7. 【简约美女win7主题】_8.4
  8. 【附源码】计算机毕业设计SSM汽车4S店服务管理系统
  9. 又是被自己菜哭的一天。。
  10. TP5.0Composer安装phpQuery