Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
2023-09-14 09:01:41 时间
一、前言
采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另当别论),这就需要考虑用opengl来绘制了,采用opengl走的GPU,会占用很少的CPU(一般是部分运算),而且一般ffmpeg采集到的就是yuv数据,可以直接用opengl来绘制,并不需要转成rgb格式的图片,转换也会占用不少的CPU资源。在Qt中一般用QOpenGLWidget来绘制yuv数据,正常解码后的yuv420p格式以及硬解码后的NV12格式,这两种需要不同的代码去绘制,所以考虑可以分两个不同的QOpenGLWidget,也可以在一个widget中通过标志位设置是何种类型,然后再去调用对应的绘制代码。
其实QOpenGLWidget也可以绘制rgb数据,意味着采集到的qimage图片也可以将对应数据交给QOpenGLWidget来绘制,总体CPU占用比纯painter绘制低一些,但是比直接绘制yuv要高一些,毕竟采集到的数据默认是yuv,需要重新转换成rgb,这个转换过程又占用了一些CPU运算。至于为何会有这种需求?有一个原因是yuv有点色差,不知道什么原因,比如网上都是 rgb = mat3(1.0, 1.0, 1.0, 0.0, -0.39465, 2.03211, 1.13983, -0.58060, 0.0) * yuv; 或者 rgb = mat3(1.0, 1.0, 1.0, 0.0, -0.3455, 1.779, 1.4075, -0.7169, 0.0) * yuv; (推荐后者)里面这几个值慢慢
相关文章
- pyCharm的Qt开发环境搭建「建议收藏」
- Qt开发笔记之QCustomPlot:QCustomPlot介绍、编译与使用
- Qt标准对话框的使用
- Qt-改变tabBar位置并改变文字方向
- C/C++ Qt 数据库SqlRelationalTable关联表
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- 使用 Qt 连接远程 MySQL 数据库(qt连接远程mysql)
- Linux安装Qt:实现轻松易用之旅(linux中安装qt)
- 在Linux中安装Qt第三方库的指南(linux安装qt库)
- 开发Linux下用Qt开发:简单易用的开发方式(linux用qt)
- 构建Linux下Qt开发环境,实现跨平台C开发(linuxqt开发环境)
- 简明易懂的Linux下QT安装指南(linux下安装qt教程)
- Linux QT开发环境配置指南(qtlinux配置)
- GUI应用Linux下Qt开发GUI应用:实现梦想的开发之路(linux下qt开发)
- 快速搭建Qt环境中的MySQL数据库(qt配置mysql数据库)
- 集成开发Linux与Qt集成开发:实现无缝交互(linux与qt)
- 使用Qt框架插入MySQL中的数据(qt插入mysql)
- QT如何访问MySQL数据库(qt访问mysql数据库)
- Qt与SQL Server的数据交互技术(qt sqlserver)
- Linux Qt ARM开发趋势分析(linuxqtarm)
- 界面让Linux拥有Qt完美图形界面的魅力(linux qt 图形)
- 「Linux Qt SDK开发新时代:简单快速轻松上手」(linux qt sdk)