欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++編程使用QT5SDK錄制屏幕并顯示

在項目中,我們有要錄制屏幕的需求,錄制屏幕有多種方法,可以基于windows api的BitBlt 、ffmpeg的AVDevice、directx 和QT,本文講解基于QT5的抓屏。QT相對于其他幾種抓屏方式優(yōu)勢是跨平臺做的比較好,接口簡單,劣勢相對于directx抓屏消耗大一些,但directx只能是windows。經(jīng)過測試directx抓屏速度最快,其他接口速度基本一致。

創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為襄汾企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站制作,襄汾網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

在我的電腦上qt 1080P屏幕抓屏消耗60~80毫秒,720p消耗30~50,也就是說如果抓屏1080我一秒最多錄制10幀。這個性能要算好,不然會造成阻塞。

  • 先獲取主屏幕然后抓屏存到QPixmap

//獲取主屏幕

QScreen *scr = QGuiApplication::primaryScreen();

//抓屏

QPixmap pix= scr->grabWindow(QApplication::desktop()->winId());

  • 將QPixmap轉(zhuǎn)為可以直接訪問rgb數(shù)據(jù)的QImage

就兩行代碼非常簡單,抓屏后數(shù)據(jù)存放在pix中,將QPixmap轉(zhuǎn)換為QImage就可以取到rgb數(shù)據(jù)了。

QImage img= pix.toImage();

uchar *date = img.bits();

  • QImage格式分析

取到截屏數(shù)據(jù)后,我們就要進(jìn)行編碼壓縮,編碼可以使用ffmpeg,需要確定取到的數(shù)據(jù)格式,可以通過img.format成員獲取,我這邊獲取的是Format_RGB32。另外要注意QT中的圖像數(shù)據(jù)不一定每個像素連續(xù)存儲,每一行會以4對齊,最簡單解決方案,就是要保證你圖像的寬度是4的倍數(shù)。如果無法保證,可以通過 img.bytesPerLine() 獲取每一行的字節(jié)數(shù)。

  • 如果想要將桌面繪制到QWidget中測試,重載paintEvent函數(shù)

void QTScreen::paintEvent(QPaintEvent *event)

{

QScreen *scr = QGuiApplication::primaryScreen();

//抓屏

QPixmap pix= scr->grabWindow(QApplication::desktop()->winId());

QImage img= pix.toImage();

QPainter p;

p.begin(this);

p.drawImage(QPoint(0, 0), qi);

p.end();

}

更多的資料也可以關(guān)注我51CTO上的視頻課程

夏老師的課堂 http://edu.51cto.com/lecturer/12016059.html

C++跨平臺開發(fā)和音視頻技術(shù)實戰(zhàn)主題套餐

C++實戰(zhàn)FFmpeg音視頻編碼實戰(zhàn)屏幕錄像機(jī)視頻課程-基于QT5和ffmpeg sdk

http://edu.51cto.com/course/10359.html

C++編程 使用QT5 SDK錄制屏幕并顯示

分享名稱:C++編程使用QT5SDK錄制屏幕并顯示
本文網(wǎng)址:http://www.chinadenli.net/article16/ihhhgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google動態(tài)網(wǎng)站企業(yè)建站移動網(wǎng)站建設(shè)網(wǎng)站建設(shè)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營