anu*_*udh 9 c++ windows directx screen-capture ms-media-foundation
我的应用程序是捕获桌面屏幕(屏幕共享)并发送到其他设备.目前应用程序使用以下方法捕获屏幕
- 使用GDI(Bitblt)
- 使用DirectX(getFrontBufferData)
- 
根据Windows版本和用例使用DXGI(桌面复制API),应用程序使用其中一个.
我正在寻找硬件加速api,它比现有的实现更快地完成这项工作.作为参考,我们在Mac OS中有一些东西点击这里.
在Windows中搜索硬件加速屏幕捕获之后,找到了以下一些选项:
- 基于GDI的捕获
 
  - 它是一个常用的软件捕获库,它支持Windows 7中的硬件加速.
- 基于Directx的捕获
 
   - 一些选项提出了以下参考文献中提到的direct3d9和direct3d11捕获.在directx方法中使用getfrontbufferData比gdi本身慢.
- 基于DXGI的捕获
 
   - 它支持Windows 8和更高版本的Windows,它是我的应用程序中的direct3d11基础实现.
- 基于Windows媒体编码器9的捕获
 
参考文献:http://www.codeproject.com/Articles/5051/Various-methods-for-capturing-the-screen和
最快的屏幕捕获方法
 
但是这些引用看起来很旧,有没有最新版Windows中的此类功能.
前三种方法已经在我的应用程序中以某种方式使用.DXGI在某种程度上更好,因为它具有硬件加速(使用GPU).
我正在寻找一个类似于上部提到的mac应用程序的Windows应用程序/库.我们的用例很简单,可以在不影响系统性能的情况下以最佳方式捕获屏幕框架(我希望只有使用GPU才能实现,这将节省cpu周期).