Windows上屏幕捕捉功能的三大API层级 GDI

Wan2.2-I2V-A14B

Wan2.2-I2V-A14B

图生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

我们可以把屏幕捕捉API大致分为三个主要层次,从最传统到最现代化。


Windows上屏幕捕捉功能的三大API层级

Windows上的远程软件开发者有更多、更高效的选择。我们可以将它们分为三个主要层级:

1. 层级一:GDI (传统方式)

这是最古老、兼容性最好但效率最低的一层。

  • 核心API:
    • BitBlt: C/C++中最常用的函数,用于将像素块从一个设备上下文(DC)复制到另一个。获取桌面DC,创建一个兼容的内存DC,然后把桌面像素复制过来。
    • PrintWindow: 可以捕捉到被其他窗口遮挡的一部分窗口内容,但并非万能。
    • 在.NET (C#) 中,对应的封装是 Graphics.CopyFromScreen
  • 工作原理: 基于CPU的像素复制。它请求Windows将最终绘制好的桌面图像复制一份到程序的内存缓冲区。
  • 优点:
    • 兼容性极佳:从最早的Windows版本一直到现在都能用。
    • 简单:API调用相对直接。
  • 缺点:
    • 性能差:在启用了硬件加速的现代桌面(Aero效果、DirectX游戏等)上效率极低,因为它需要将GPU渲染好的数据回读到系统内存,非常消耗CPU和内存带宽。
    • 闪烁问题:频繁捕捉可能会导致鼠标指针闪烁。
    • 内容丢失:无法捕捉到某些使用DirectX或Vulkan等现代图形API渲染的独占全屏应用(例如游戏)的画面。
  • 举例:
    • 早期的VNC软件 (如RealVNC的旧版本) 和许多简单的内部远程工具。
    • 上面提到的 inletex easy meeting classic
2. 层级二:DXGI Desktop Duplication API (现代高效方式)

这是从 Windows 8 开始引入的现代化API,是目前许多高性能远程软件的首选。

  • 核心API:
    • DXGI (DirectX Graphics Infrastructure) 接口,特别是 IDXGIOutputDuplication
  • 工作原理: 此API工作在DirectX层面,直接与显示驱动和GPU交互。它不再是“复制像素”,而是允许应用程序“复制”桌面图像的GPU纹理(Texture)。这意味着数据可以在GPU显存中直接处理,避免了昂贵的CPU读写操作。它还能高效地只提供屏幕上发生变化的部分(脏矩形, Dirty Rects),极大减少了数据传输量。
  • 优点:
    • 性能极高:捕捉操作主要由GPU完成,CPU占用率非常低。
    • 效率高:可以只获取屏幕更新的区域,无需每次都传输整个屏幕。
    • 内容完整:能够捕捉到几乎所有内容,包括DirectX渲染的游戏和应用。
  • 缺点:
    • 实现复杂:需要开发者对DirectX有深入的了解。
    • 兼容性:仅支持 Windows 8 及以上版本。
    • 权限问题:可以捕捉到UAC等安全桌面(当程序以SYSTEM权限运行时),这既是优点也是安全风险。
  • 举例:
    • TeamViewerAnyDeskSplashtop 等主流商业远程桌面软件都在其高性能模式下使用此技术。
    • OBS Studio 的“显示器捕获”功能在旧版本或特定模式下也使用它。
    • Parsec,一款专注于低延迟游戏串流的软件,其核心就是基于此类GPU层面的捕捉技术。
3. 层级三:Windows Graphics Capture (WGC) (最新、最安全的方式)

这是在 Windows 10 (1803版本) 后引入的最新、最推荐的API。它在DXGI的基础上进行了封装,更易用、更安全。

  • 核心API:
    • Windows.Graphics.Capture 命名空间下的API,如 GraphicsCapturePicker, GraphicsCaptureItem, GraphicsCaptureSession
  • 工作原理: 底层技术与DXGI Desktop Duplication类似,都是基于GPU的高效捕捉。但它在顶层增加了重要的安全和易用性封装。它强制要求用户通过一个标准的系统对话框来选择要分享的窗口或显示器。
  • 优点:
    • 安全性好:应用程序不能“偷偷”捕捉屏幕,必须由用户明确授权。被捕捉的窗口或屏幕通常会有一个黄色的边框作为提示。
    • 易于使用:API设计比原生DXGI简单得多,开发者无需深入了解DirectX的复杂细节。
    • 窗口捕捉能力强:可以完美捕捉单个窗口的内容,即使该窗口被其他窗口遮挡或最小化(只要该应用没因为被遮挡而停止渲染),这是GDI和DXGI都很难做到的。
    • 跨GPU支持好:在有多显卡的笔记本上表现比DXGI更稳定。
  • 缺点:
    • 需要用户交互:无法在后台服务中静默启动捕捉,必须有用户手动选择的过程。
    • 无法捕捉安全桌面:出于安全考虑,无法捕捉UAC弹窗等界面。
    • 兼容性:需要较新版本的 Windows 10 或 Windows 11。
  • 举例:
    • Windows自带的截图和录屏工具 (Win+G)
    • OBS Studio 最新的“Windows Graphics Capture”源,这是目前在Windows上捕捉游戏的推荐方式。
    • Microsoft TeamsDiscordSlack 等协作软件的屏幕共享功能。

总结对比

层级API/技术核心原理优点缺点典型应用
层级一 (传统)GDI (BitBlt)CPU像素复制兼容性好、简单性能差、无法捕捉硬件加速内容老旧VNC, inletex, 简单截图工具
层级二 (现代)DXGI Desktop DuplicationGPU纹理复制性能极高、效率高复杂、仅限Win8+TeamViewer, AnyDesk, Parsec, OBS(旧)
层级三 (最新)Windows Graphics Capture (WGC)GPU复制 + 安全封装安全、易用、窗口捕捉能力强需用户授权、仅限新版Win10+Teams, Discord, OBS(新), Windows录屏

您可能感兴趣的与本文相关的镜像

Wan2.2-I2V-A14B

Wan2.2-I2V-A14B

图生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值