1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      C++編程使用QT5SDK錄制屏幕并顯示

      在項(xiàng)目中,我們有要錄制屏幕的需求,錄制屏幕有多種方法,可以基于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)隊(duì)從業(yè)經(jīng)驗(yàn)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)驗(yàn)和眾多成功案例,為您定制開發(fā)。

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

      • 先獲取主屏幕然后抓屏存到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ù)不一定每個(gè)像素連續(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ù)實(shí)戰(zhàn)主題套餐

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

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

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


      網(wǎng)站題目:C++編程使用QT5SDK錄制屏幕并顯示
      地址分享:http://www.ef60e0e.cn/article/ihhhgg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        遂昌县| 莱州市| 临潭县| 莲花县| 蓬安县| 滕州市| 乌拉特前旗| 哈尔滨市| 岱山县| 大悟县| 德清县| 会同县| 平远县| 漠河县| 阳谷县| 炉霍县| 车险| 班玛县| 修武县| 奉新县| 如皋市| 印江| 永平县| 西乡县| 朝阳区| 焉耆| 宜兴市| 商都县| 大丰市| 绥芬河市| 乐东| 桂平市| 江油市| 涞源县| 太湖县| 通榆县| 桑植县| 纳雍县| 微山县| 兰考县| 玛纳斯县|