windows - 屏幕抓取技术总结

Windows抓屏技术
前3项是主要在使用monitor capture 技术方案。是obs 的实现

1. BitBlt (DC)

目前windows 上最通用的技术方案

1.1 调用过程

  • GetDC(GetDesktokWindow() )获取桌面的DC
  • 然后使用CreateDIBSection创建一个设备无关位图以及内存DC
  • 使用BitBlt把桌面DC的复制到内存DC,这样通过内存DC就能直接获取到原始RGB数据。

1.2 优缺点

优点:GDI函数实现的通用做法,能在所有windows平台实现

缺点:通用归通用,截取的效率则是有点低,尤其是要达到每秒20帧以上的截取,占用CPU有点高,GDI不能获取鼠标,需要在截取的图像中把鼠标画上去。

2.DXGI

Windows8以后微软引入了一套新的接口,叫“Desktop Duplication API”,而由于Desktop Duplication API是通过Microsoft DirectX Graphics Infrastructure (DXGI)来提供桌面图像的,速度非常快。由于是通过GPU,所以cpu占用率很低,性能很高。

2.1 调用流程

  • 创建D3DDevice
  • 通过一系列接口获取路径,获取到IDXGIOutputDuplication接口
  • 调用AcquireNextFrame,获取当前桌面数据,保存在IDXGIResource中
  • 把数据从GPU映射到内存中
  • 拷贝需要的数据到自己的buffer里
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值