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的性能只能用可怕来形容。。。

注意:上面最后表里的DXGI帧率当时应该是统计错误,实际到达不了这么高,很多是无效采集,但是有效采集的帧率也是非常高的,具体数据等我有时间了再做统计。(2019-03-22)

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

合作请联系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. 「SAP技术」SAP SD微观研究之根据销售订单查询到该订单发货的批次
  2. git 内网搭建_搭建GitLab(Github) 简易教程
  3. CVE-2021-29454——Smarty模板注入
  4. Glusterfs初试
  5. 自然语言处理中的Attention Model:是什么以及为什么[二]
  6. 一个极其高效的虚拟机内存冗余消除机制:UKSM
  7. virtualbox导致Windows7重启
  8. 第六百二十二天 how can I 坚持
  9. Android最佳安全应用程序已出炉,Google Play Protect曝大冷门
  10. splice方法_JavaScript数组_数组方法【一】(二十六)
  11. 操作系统 李治军 操作系统基础(一)
  12. 卓有成效的管理者(笔记)——掌握自己的时间
  13. 智能手机TFT-LCD显示驱动芯片行业现状调研及趋势分析报告
  14. ideaIU--2018.2.2安装教程
  15. 1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
  16. linux安装网卡驱动make报错,linux 安装网卡驱动详解
  17. 天刀 沧海云帆 服务器位置,1月第一批 天刀沧海云帆大区合服公告
  18. win7首次使用计算机,首次安装win7系统如何进行硬盘分区
  19. 盘点Scratch少儿编程的实用性
  20. 瑞萨电子第一家Preferred Partner-武汉万象奥科

热门文章

  1. Motionbuilder中bvh文件绑定到任意模型
  2. 【Java项目:基于java+ssm生鲜超市进销存管理系统——计算机毕业设计
  3. 我是实操型 如何短短半年做到日发500票
  4. AIOC超级工具箱授权码1-13号过期,需要联系
  5. The import com... cannot be resolved
  6. oracle aq 删除,创建及删除AQ table时候报错 ORA-00955,ORA-24005,ORA-24002 - 1
  7. 《白鹭引擎01》场景中添加图片
  8. 卷积神经网络:汇聚层
  9. 邯郸网络服务器机柜型号,珠海服务器机柜批发
  10. BZOJ 2073: [POI2004]PRZ 状压动归