QT 显示视频 linux下 Qt和 Xv是本文要介绍的内容,先来对linux下的 Qt和 Xv来做个总结,然后加了一段代码,供大家参考!先来看内容。

采用Qt+Xv实现视频显示的原因是因为Xv可以使用显卡进行显示加速;比如,对于视频大小的缩放,如果交给cpu来完成这项操作,那cpu的计算量是非常大的,一般的cpu基本上是满负荷运转了,所以,选用Xv来实现视频缩放和显示,是一个非常明智的选择;这里我先简单说一下,为什么Qt可以和Xv和在一起来显示视频帧呢?它的原理又是什么呢?

首先,我们要知道,无论是Qt还是Xv,他们都是基于一个显示架构的,那就是X架构,Qt是对Xlib进行的更高层及的封装,而Xv则是对Xlib功能上 的一个扩展,旨在尽可能的挖掘显卡的运算能力,而实现更为强大的功能;这也是为什么两者可以结合在一起显示视频的理论和实际基础了;然而,又由于,两者所 在的层次不同,而且目的也不同,那么如何将这两者结合起来,就成为了当前的最大的问题了;

通过在网上搜索,可以知道Xv可以直接显示YUV数据,并且很容易实现视频缩放,而且这些都已经经过硬件加速优化过了;这也正是我最需要的!

我们直接开始介绍Xv中的显示图片的函数--XvPutImage,和Xlib提供的显示图片函数XPutImage只相差一个字母,但是这个函数功能确强大了许多;

此函数的函数原型为:

XvPutImage(Display *, XvPortID, Window, GC *, XvImage *, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h);

针对此函数,我们来看怎么使用此函数,会用了此函数,就可以显示YUV数据了;

此函数需要结合一个QWidget才能够显示图片;

第一个参数,可以通过QWidget的x11Display()函数得到;

第二个,可以通过XvQueryAdaptors得到;

第三个,通过QWidget的winId()得到;

第四个,通过XvCreateImage得到;

剩下的几个坐标函数,我就不解释了,光看参数名称,就应该猜的出来;

这里需要注意的一点是,在使用XvCreateImage生成了新的XvImage时,此函数的第四个参数可以直接赋予AVFrame的data[0]指 针,这样,就把ffmpeg的数据帧同要显示的XvImage联系到了一起,并且,这个AVFrame中的data[0]数据为YUV数据,完全符合要 求,可以直接刷新显示了;

总的来说,大致就是这样子了,以后有什么疑问,还会对此文档进行详细扩充;争取写成教程;

采用Xv进行显示也是存在风险的,一旦当前系统的驱动对Xv支持不好,或者干脆不支持,那么就不能显示视频了。

QT 显示视频代码:

QPainter has a method called drawImage. You can do something like the

following in a subclass of QWidget:

void VideoWidget::paintEvent()

{

//Get

the current frame and size data...

//Passing QImage

QImage frame(frameDataUCharPtr, frameWidth, frameHeight.

QImage::Format_RBG32 );

QPainter painter(this);

painter.drawImage(rect(), frame);

}

Under Qtopia

you can use QDirectPainter to write directly to framebuffer

memory and get

some faster access for drawing frames. You will have to

do the color conversions yourself to get

the frame into your

framebuffer's color model.

--Justin

小结:关于详解 QT 显示视频 linux下Qt和Xv实现的内容介绍到这里,希望本文对你有所帮助!

【编辑推荐】

【责任编辑:李程站 TEL:(010)68476606】

点赞 0

qt linux 视频教程,详解 QT 显示视频 Linux下 Qt 和 Xv实现相关推荐

  1. linux命令chgrp,Linux命令详解之–chgrp命令 | Linux大学

    摘要 Linux chgrp命令 可以用来变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可. 我们在Linux命令详解之–chown命令 | Linux大学这篇文章中,我们介绍了更改文件 ...

  2. linux powerpc详解-核心篇 pdf,Linux PowerPC详解--核心篇 (王齐) pdf扫描版

    本书分8章,第1章讲述linux powerpc的组成:第2-4章讲述了有关powerpc处理器的基础知识,包括指令集.寄存器.内存体系结构等:第5-8章讲述linux系统在powerpc处理器中的运 ...

  3. linux中which命令详解,Linux命令详解之–which命令 | Linux大学

    摘要 Linux which命令 通常用于查找文件.本文就为大家介绍下 Linux which 命令 的用法与示例. Linux which命令 通常用于查找文件.本文就为大家介绍下 Linux wh ...

  4. Linux 命令详解(六)Linux 守护进程的启动方法

    Linux 守护进程的启动方法 http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html

  5. Linux使用详解(进阶篇)

    文章目录 Linux使用详解(进阶篇) 1.Linux目录说明 2.操作防火墙 3.ulimit命令和history命令 4.RPM和Yum的使用 5.设置系统字符集 6.vi & vim编辑 ...

  6. linux小红帽系统装打印机驱动,Linux系统详解 第三篇:红帽RHEL的安装

    Linux系统详解 第二篇:红帽RHEL的安装 前言: 本系列文章取材广泛,有来自于互联网的,有来自教科书的,有来自自己的笔记的,也有来自自己对Linux的经验积累的.此系列的文章都是经过长时间的整理 ...

  7. rv1109/rv1126 编译并部署QT项目(详解)

    目录 前言 一.Windows 下QT环境搭建 二.在 Builroot 下编译QT应用 1.Buildroot下构建QT工程 2.移植源码 3.编译工程 三.使用交叉编译工具链编译QT 1.准备工作 ...

  8. Qt pro 文件详解

     Qt pro 文件详解 1. TEMPLATE  变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件.Qmake  工具定义了5种模板:   a. 应用 ...

  9. QT QtableView操作详解

    本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删 ...

  10. Qt 5.12--Item详解

    Qt 5.12--Item详解 1 作为容器 2 默认属性 3 透明度 4 堆叠顺序 5 定位子项目和坐标映射 参考 QML中的所有可视项目都继承自Item.虽然Item本身没有可视化的外观,但是它定 ...

最新文章

  1. Elasticsearch入门Demo(二)
  2. 异步编程模型--使用 IAsyncResult 对象
  3. MySQL模糊查询再也用不着 like+% 了!
  4. 安装Redis Live监控服务
  5. SQL取xml中节点值
  6. HDU 3501 Calculation 2
  7. 解决JDBC连接MySQL时发出的警告WARN: Establishing SSL connection without server‘s identity verification ...
  8. Tensorflow载入模型详解,方法一(基础版):针对测试模型性能 和 使用模型。
  9. asp.net MVC控制器中返回JSON格式的数据时提示下载
  10. java 的类和接口的变量调用
  11. sc7cb27180 士兰微_供应 SILAN/士兰微 SC7A30E SC7A30 LGA10-3A 加速度计/三轴磁传感器
  12. 数据库容灾、复制解决方案全分析
  13. matlab入门---数值计算
  14. 【JavaWeb】石家庄地铁搭乘系统——第二版
  15. Easyui设置easyui-textbox不可编辑
  16. Unity3d多人网络
  17. 电力电子技术的matlab实践 下载,电力电子技术MATLAB仿真实践指导及应用
  18. Windows 下启动tomcat
  19. 机器学习准备数据时如何避免数据泄漏
  20. Windows 系统错代码

热门文章

  1. Taro 周报 #7: 收获「e代驾」案例,发布 v2.2.16 和 v3.2.0-canary.2
  2. Win10安装Ruby
  3. WIN7安装.Net Framework 4报错的解决方法
  4. 获取Bootcamp 6 下载地址(mac装win10)
  5. 服务器为啥要搭建在2012系统,WindowsServer2012R2搭建SFTP服务器以及配置
  6. 黑莓z10 android,黑莓Z10成功刷机完成_黑莓 Z10_手机其它OS-中关村在线
  7. CDN原理 CDN技术是什么
  8. win10/win7安装Rational Rose 2007(解决虚拟光驱加载不了bin文件问题)
  9. 计算机类和鼠标类是什么关系,什么是机械鼠标和光学鼠标?两者有什么区别?...
  10. 主机游戏神作和排行榜