成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解 QT 顯示視頻 Linux下 Qt 和 Xv實(shí)現(xiàn)

移動(dòng)開(kāi)發(fā)
無(wú)論是Qt還是Xv,他們都是基于一個(gè)顯示架構(gòu)的,那就是X架構(gòu),Qt是對(duì)Xlib進(jìn)行的更高層及的封裝,而Xv則是對(duì)Xlib功能上 的一個(gè)擴(kuò)展,先來(lái)看內(nèi)容。

 

QT 顯示視頻 linuxQt Xv 是本文要介紹的內(nèi)容,先來(lái)對(duì)linux下的 Qt Xv來(lái)做個(gè)總結(jié),然后加了一段代碼,供大家參考!先來(lái)看內(nèi)容。

采用Qt+Xv實(shí)現(xiàn)視頻顯示的原因是因?yàn)?strong>Xv可以使用顯卡進(jìn)行顯示加速;比如,對(duì)于視頻大小的縮放,如果交給cpu來(lái)完成這項(xiàng)操作,那cpu的計(jì)算量是非常大的,一般的cpu基本上是滿負(fù)荷運(yùn)轉(zhuǎn)了,所以,選用Xv來(lái)實(shí)現(xiàn)視頻縮放和顯示,是一個(gè)非常明智的選擇;這里我先簡(jiǎn)單說(shuō)一下,為什么Qt可以和Xv和在一起來(lái)顯示視頻幀呢?它的原理又是什么呢?

首先,我們要知道,無(wú)論是Qt還是Xv,他們都是基于一個(gè)顯示架構(gòu)的,那就是X架構(gòu),Qt是對(duì)Xlib進(jìn)行的更高層及的封裝,而Xv則是對(duì)Xlib功能上 的一個(gè)擴(kuò)展,旨在盡可能的挖掘顯卡的運(yùn)算能力,而實(shí)現(xiàn)更為強(qiáng)大的功能;這也是為什么兩者可以結(jié)合在一起顯示視頻的理論和實(shí)際基礎(chǔ)了;然而,又由于,兩者所 在的層次不同,而且目的也不同,那么如何將這兩者結(jié)合起來(lái),就成為了當(dāng)前的最大的問(wèn)題了;

通過(guò)在網(wǎng)上搜索,可以知道Xv可以直接顯示YUV數(shù)據(jù),并且很容易實(shí)現(xiàn)視頻縮放,而且這些都已經(jīng)經(jīng)過(guò)硬件加速優(yōu)化過(guò)了;這也正是我最需要的!

我們直接開(kāi)始介紹Xv中的顯示圖片的函數(shù)--XvPutImage,和Xlib提供的顯示圖片函數(shù)XPutImage只相差一個(gè)字母,但是這個(gè)函數(shù)功能確強(qiáng)大了許多;

此函數(shù)的函數(shù)原型為:

  1. 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); 

針對(duì)此函數(shù),我們來(lái)看怎么使用此函數(shù),會(huì)用了此函數(shù),就可以顯示YUV數(shù)據(jù)了;

此函數(shù)需要結(jié)合一個(gè)QWidget才能夠顯示圖片;

第一個(gè)參數(shù),可以通過(guò)QWidget的x11Display()函數(shù)得到;

第二個(gè),可以通過(guò)XvQueryAdaptors得到;

第三個(gè),通過(guò)QWidget的winId()得到;

第四個(gè),通過(guò)XvCreateImage得到;

剩下的幾個(gè)坐標(biāo)函數(shù),我就不解釋了,光看參數(shù)名稱,就應(yīng)該猜的出來(lái);

這里需要注意的一點(diǎn)是,在使用XvCreateImage生成了新的XvImage時(shí),此函數(shù)的第四個(gè)參數(shù)可以直接賦予AVFrame的data[0]指 針,這樣,就把ffmpeg的數(shù)據(jù)幀同要顯示的XvImage聯(lián)系到了一起,并且,這個(gè)AVFrame中的data[0]數(shù)據(jù)為YUV數(shù)據(jù),完全符合要 求,可以直接刷新顯示了;

總的來(lái)說(shuō),大致就是這樣子了,以后有什么疑問(wèn),還會(huì)對(duì)此文檔進(jìn)行詳細(xì)擴(kuò)充;爭(zhēng)取寫(xiě)成教程;

采用Xv進(jìn)行顯示也是存在風(fēng)險(xiǎn)的,一旦當(dāng)前系統(tǒng)的驅(qū)動(dòng)對(duì)Xv支持不好,或者干脆不支持,那么就不能顯示視頻了。

QT 顯示視頻代碼:

  1.  
  2. QPainter has a method called drawImage. You can do something like the   
  3.  
  4. following in a subclass of QWidget:   
  5.  
  6. void VideoWidget::paintEvent()   
  7. {   
  8. //Get   
  9. the current frame and size data...   
  10. //Passing QImage   
  11. QImage frame(frameDataUCharPtr, frameWidth, frameHeight.  
  12. QImage::Format_RBG32 );   
  13. QPainter painter(this);   
  14. painter.drawImage(rect(), frame);   
  15. }   
  16. Under Qtopia   
  17. you can use QDirectPainter to write directly to framebuffer   
  18. memory and get   
  19. some faster access for drawing frames. You will have to   
  20. do the color conversions yourself to get   
  21. the frame into your   
  22. framebuffer's color model.   
  23. --Justin  

小結(jié):關(guān)于詳解 QT 顯示視頻 linux Qt Xv 實(shí)現(xiàn) 的內(nèi)容介紹到這里,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-24 13:27:13

Ubuntu QT SDK

2011-06-29 10:18:20

LINUX QT ARM

2011-06-22 17:36:50

QT Linux 串口

2011-04-02 09:17:38

2011-06-08 14:06:42

linux SDK Qt

2011-06-30 17:51:17

QT 元類型 線程

2011-06-24 09:01:20

Qt QLibrary dll

2011-06-24 17:05:07

QT QT 4.7.3 windows

2011-06-24 10:05:51

QT 對(duì)象 父對(duì)象

2011-07-05 11:10:23

Linux Qt 移植

2011-07-05 10:55:14

Linux Qt 移植

2011-06-28 15:18:45

Qt 單例模式

2011-06-23 14:05:32

Qt 事件機(jī)制

2011-06-28 13:38:15

Arm linux QT

2011-07-01 12:52:50

Ubuntu Qt wxWidgets

2011-06-23 13:38:27

QT 元對(duì)象 信號(hào)

2011-06-16 10:09:25

QT Windows DLL

2011-08-30 13:59:06

QTMysql數(shù)據(jù)庫(kù)

2011-06-21 17:01:44

Qt 靜態(tài) 編譯

2011-06-20 17:33:58

Qt MeegoTouch Maemo
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久精彩视频 | 日本一区二区在线视频 | 国产一区二区三区 | 欧美成人影院在线 | 97视频免费| 精品国产一区二区在线 | 视频一区二区在线观看 | 搞av.com| 精品少妇一区二区三区在线播放 | 91色在线 | 四虎影院美女 | 免费一看一级毛片 | 国产精品69毛片高清亚洲 | 最新国产精品视频 | 亚洲第一网站 | 国产精品毛片无码 | 999视频| 国产激情一区二区三区 | 亚洲人成人一区二区在线观看 | 日本特黄a级高清免费大片 特黄色一级毛片 | 粉嫩国产精品一区二区在线观看 | 中文字幕a√ | www,黄色,com| 特级一级黄色片 | www.久久国产精品 | 久草网站| av在线一区二区 | 婷婷丁香综合网 | 免费视频一区二区三区在线观看 | 亚洲精品18 | 99精品国自产在线观看 | 玖玖视频网 | 亚洲日韩中文字幕一区 | 香蕉视频久久久 | 久久国产精品91 | 综合视频在线 | 精品91| av在线播放网址 | 久久影音先锋 | 99爱在线视频 | 二区三区在线观看 |