核心功能模块
1. 屏幕捕获子系统
通过 DXGI Desktop Duplication API 实现 GPU 加速的桌面帧抓取,支持任意分辨率的完整屏幕捕获。
利用 D3D11 Staging Texture 实现 GPU 到 CPU 的高效数据回传,避免传统 GDI 截图方式的性能瓶颈。
2. 视频编码与媒体写入
集成 Media Foundation Sink Writer,支持 H.264 硬件编码输出,可配置比特率、帧率、质量级别(QualityVsSpeed)等编码参数。
实现 RGB32 原始帧到 H.264 压缩流的实时转换,支持无损和有损两种编码模式。
3. 录制控制与线程管理
完整的录制状态机(录制中 / 暂停 / 停止),支持暂停恢复时的时间补偿计算,确保时间戳连续性。
独立录制线程,采用高精度定时器(high_resolution_clock)控制帧间隔,自动修正帧率漂移。
4. 鼠标光标叠加
实时检测系统光标状态(可见性、位置、图标句柄),通过 GDI DrawIcon 将光标绘制到捕获帧上,解决 Desktop Duplication API 默认不包含光标的问题。
5. C 语言导出接口
提供 extern "C" 的 DLL 导出函数(CreateCamera、StartRecording、StopRecording 等),支持 C++/C#/Python 等多语言调用,便于集成到第三方应用中。
我的角色
我独立完成了该屏幕录制库的全部设计与开发工作,具体包括:
设计并实现基于 DXGI 和 Media Foundation 的捕获-编码-写入流水线架构。
解决鼠标光标独立捕获与图像叠加的技术难题。
实现录制线程的精确帧率控制与暂停/恢复时间补偿算法。
封装 C 语言导出接口,确保跨语言兼容性。