DXGI快速截屏录屏技术

概述

  很多地方都需要用到截屏/录屏技术,比如桌面直播,桌面录制等等。在微软Windows平台,有很多截屏的接口,不过大多数性能并不理想,Windows8以后微软引入了一套新的接口,叫“Desktop Duplication API”,应用程序,可以通过这套API访问桌面数据。而由于Desktop Duplication API是通过Microsoft DirectX Graphics Infrastructure (DXGI)来提供桌面图像的,速度非常快。由于是通过GPU,所以cpu占用率很低,性能很高。

  还有一点有意思的是,Duplication API获取到的桌面数据,不管显示模式如何设置,都永远是32位RGBA数据,其实这样方便的多了,不用考虑其他可能的情况,比如24位等。

  综合来看,各方面秒杀GDI截屏技术,易用性上也比MirrorDriver技术好得多,是Windows8以后平台的截屏技术首选。

调用流程

  首先,这套接口是集成在DirextX之中的,所以更大部分DirectX接口的使用方式基本一致,也就是通过D3D,各种QueryInterface,各种Enum,核心方法,是AcquireNextFrame。先简单说下流程。

  1. 创建D3DDevice
  2. 通过一系列接口获取路径,获取到IDXGIOutputDuplication接口
  3. 调用AcquireNextFrame,获取当前桌面数据,保存在IDXGIResource中
  4. 把数据从GPU映射到内存中
  5. 拷贝需要的数据到自己的buffer里

  其中,获取到IDXGIOutputDuplication接口,是通过如下路径:
IDXGIDevice --> IDXGIAdapter --> IDXGIOutput --> IDXGIOutput1 --> IDXGIOutputDuplication

关键代码

创建接口

获取一帧桌面数据

截屏性能测试

  这里把他跟传统的使用GDI截屏技术,进行对比。程序只截取桌面数据,然后把数据保存到自己的内存buffer中,不做其他操作。CPU有点差,如果是好点的cpu,性能数据应该是更好看,不过做对比还是很明显能看出来的。

  • CPU:i3-3120M,2.5GHZ,双核四线程
  • 系统:Windows10
  • 内存:8GB

  

我的笔记本比较老了,所以GDI最多只能跑到20帧了,不过可以看到,即使这种情况下,当不设置帧率,也就是无限循环截屏的情况下,DXGI的性能只能用可怕来形容。。。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

haibindev.cnblogs.com,合作请联系QQ。(转载请注明作者和出处~)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

DXGI快速截屏录屏技术相关推荐

  1. DXGI快速截屏录屏技术,高帧率直播桌面

    DXGI快速截屏录屏技术 概述   很多地方都需要用到截屏/录屏技术,比如桌面直播,桌面录制等等.在微软Windows平台,有很多截屏的接口,不过大多数性能并不理想,Windows8以后微软引入了一套 ...

  2. webrtc性能优化:MacOS下的快速截屏录屏方式

    截屏和录屏现在已经变成了各个系统中最最基础的功能了,特别是直播的兴起和疫情促进的会议系统,诸如远程办公,都会使用到系统录屏的功能,录屏的快慢又决定了我们直播和会议的流畅程度. 最近各个大厂商也推出了很 ...

  3. iphone屏幕镜像如何全屏_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)

    苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...

  4. 苹果xr截屏怎么截_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)

    苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...

  5. Win10怎么截屏录屏?Win10截图方法大全 超强大的工具!

    转载自奇它博客,原文链接:[http://qitablog.com/tips/win10怎么截屏录屏?win10截图方法大全-超强大的工具!.html ‎] [infobox title=" ...

  6. 超便携式截屏录屏软件FastStone Capture

    超便携式截屏录屏软件FastStone Capture 转载于:https://www.cnblogs.com/Renyi-Fan/p/8628196.html

  7. 截屏录屏软件分享 FSCapture、Snipaste【目前见过的最好用的录屏软件】

    目录 截屏录屏软件--FSCapture 截屏软件--Snipaste-2.4-Beta-x64.zip 截屏录屏软件--FSCapture 使用教程(17:09):https://www.bilib ...

  8. 截屏录屏和屏幕颜色抓取

    分享截屏录屏和屏幕颜色抓取两个工具 这两个工具都是我常用的,觉得还不错 下面分享链接以及使用方法 截屏录屏取色工具链接: https://pan.baidu.com/s/1GA75-5oX4yuujU ...

  9. 【Ubuntu20.04】好用的快捷键\截屏录屏

    unbuntu20.04好用的快捷键 快捷键很大程度上决定了一个产品的使用体验,作为一个刚刚接触linux的小白根据自身需求学习了一下在编码过程中ubuntu20.04可能会用到的一些,在这里和大家分 ...

最新文章

  1. Django之路——6 Django的模型层(一)
  2. poj1654 Area
  3. 苹果Q1财报出炉:手机收入下滑15%,服务收入增长19%
  4. AnnotationScopeMetadataResolver 解析作用域元数据
  5. 漫画讲解HDFS原理
  6. Linux-Vim使用技巧
  7. 制动刹车片六个养护要点
  8. 累计增量备份策略_数据安全与备份解决方案ZDLRA快速恢复
  9. 在Windows上安装Python
  10. [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.8
  11. php获取qq音乐的api类,QQ音乐api接口梳理
  12. 虚假信息成物联网“毒瘤”
  13. wireshark常用过滤表达式
  14. nuvoton uboo2013引导流程 1 - 配置
  15. Java面向对象游戏-黑熊怪变成武大郎吃唐僧 --如何方法继承 重写
  16. 在Android Studio上编写第一个安卓程序
  17. 人工智能时代,语音技术怎么赚钱?
  18. set、env、export的区别
  19. 北京pHp彭老师,记忆惊人的彭老师 - 交朋聚友 - 天涯比邻网 - Powered by Discuz!
  20. 【C语言】用“*”打印一个三角形

热门文章

  1. 解决apt-get下载速度慢的两种方式
  2. 2021-01-28:IDEA快捷键command+/反斜杠接触不良问题
  3. SQL Server 管理套件(SSMS)
  4. 刘汝佳算法竞赛入门例题-循环部分
  5. Java实现模板写作系统,java+servlet+mysql实现的学生信息管理系统的毕设模板及指导思路...
  6. 前端性能优化 雅虎军规35条
  7. C Primer Plus (第五版)中文版——第 10 章 数组和指针
  8. Trigger触发器常见问题
  9. Android Freetype的学习过程总结
  10. 浅析云计算领域的专业名词