DXGI快速截屏录屏技术,高帧率直播桌面
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。先简单说下流程。
- 创建D3DDevice
- 通过一系列接口获取路径,获取到IDXGIOutputDuplication接口
- 调用AcquireNextFrame,获取当前桌面数据,保存在IDXGIResource中
- 把数据从GPU映射到内存中
- 拷贝需要的数据到自己的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快速截屏录屏技术,高帧率直播桌面相关推荐
- DXGI快速截屏录屏技术
DXGI快速截屏录屏技术 概述 很多地方都需要用到截屏/录屏技术,比如桌面直播,桌面录制等等.在微软Windows平台,有很多截屏的接口,不过大多数性能并不理想,Windows8以后微软引入了一套 ...
- webrtc性能优化:MacOS下的快速截屏录屏方式
截屏和录屏现在已经变成了各个系统中最最基础的功能了,特别是直播的兴起和疫情促进的会议系统,诸如远程办公,都会使用到系统录屏的功能,录屏的快慢又决定了我们直播和会议的流畅程度. 最近各个大厂商也推出了很 ...
- iphone屏幕镜像如何全屏_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)
苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...
- 苹果xr截屏怎么截_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)
苹果系统中的截屏和录屏.标记和剪辑功能一如它的其他产品设计,做得非常细致.在我们日常的工作中,不免会遇到这些功能,今天小编就给大家详细讲解下苹果系统截屏录屏.标记剪辑功能,希望对大家有所帮助! 001 ...
- Win10怎么截屏录屏?Win10截图方法大全 超强大的工具!
转载自奇它博客,原文链接:[http://qitablog.com/tips/win10怎么截屏录屏?win10截图方法大全-超强大的工具!.html ] [infobox title=" ...
- 超便携式截屏录屏软件FastStone Capture
超便携式截屏录屏软件FastStone Capture 转载于:https://www.cnblogs.com/Renyi-Fan/p/8628196.html
- 截屏录屏软件分享 FSCapture、Snipaste【目前见过的最好用的录屏软件】
目录 截屏录屏软件--FSCapture 截屏软件--Snipaste-2.4-Beta-x64.zip 截屏录屏软件--FSCapture 使用教程(17:09):https://www.bilib ...
- 截屏录屏和屏幕颜色抓取
分享截屏录屏和屏幕颜色抓取两个工具 这两个工具都是我常用的,觉得还不错 下面分享链接以及使用方法 截屏录屏取色工具链接: https://pan.baidu.com/s/1GA75-5oX4yuujU ...
- 【Ubuntu20.04】好用的快捷键\截屏录屏
unbuntu20.04好用的快捷键 快捷键很大程度上决定了一个产品的使用体验,作为一个刚刚接触linux的小白根据自身需求学习了一下在编码过程中ubuntu20.04可能会用到的一些,在这里和大家分 ...
最新文章
- 「SAP技术」SAP SD微观研究之根据销售订单查询到该订单发货的批次
- git 内网搭建_搭建GitLab(Github) 简易教程
- CVE-2021-29454——Smarty模板注入
- Glusterfs初试
- 自然语言处理中的Attention Model:是什么以及为什么[二]
- 一个极其高效的虚拟机内存冗余消除机制:UKSM
- virtualbox导致Windows7重启
- 第六百二十二天 how can I 坚持
- Android最佳安全应用程序已出炉,Google Play Protect曝大冷门
- splice方法_JavaScript数组_数组方法【一】(二十六)
- 操作系统 李治军 操作系统基础(一)
- 卓有成效的管理者(笔记)——掌握自己的时间
- 智能手机TFT-LCD显示驱动芯片行业现状调研及趋势分析报告
- ideaIU--2018.2.2安装教程
- 1%大气密度也能飞?NASA把无人机送上火星,最具野心探测计划启动
- linux安装网卡驱动make报错,linux 安装网卡驱动详解
- 天刀 沧海云帆 服务器位置,1月第一批 天刀沧海云帆大区合服公告
- win7首次使用计算机,首次安装win7系统如何进行硬盘分区
- 盘点Scratch少儿编程的实用性
- 瑞萨电子第一家Preferred Partner-武汉万象奥科
热门文章
- Motionbuilder中bvh文件绑定到任意模型
- 【Java项目:基于java+ssm生鲜超市进销存管理系统——计算机毕业设计
- 我是实操型 如何短短半年做到日发500票
- AIOC超级工具箱授权码1-13号过期,需要联系
- The import com... cannot be resolved
- oracle aq 删除,创建及删除AQ table时候报错 ORA-00955,ORA-24005,ORA-24002 - 1
- 《白鹭引擎01》场景中添加图片
- 卷积神经网络:汇聚层
- 邯郸网络服务器机柜型号,珠海服务器机柜批发
- BZOJ 2073: [POI2004]PRZ 状压动归