【发布时间】:2016-05-28 23:59:46
【问题描述】:
可以在 Windows Media Foundation 中使用Video capture 捕获桌面屏幕。
阅读 Windows 开发者指南后,它似乎用于从设备(如相机或其他外部设备)捕获视频。
如果是,是硬件加速 API 还是软件基础?
【问题讨论】:
标签: c++ windows ms-media-foundation screen-capture
可以在 Windows Media Foundation 中使用Video capture 捕获桌面屏幕。
阅读 Windows 开发者指南后,它似乎用于从设备(如相机或其他外部设备)捕获视频。
如果是,是硬件加速 API 还是软件基础?
【问题讨论】:
标签: c++ windows ms-media-foundation screen-capture
对于桌面屏幕截图,您应该查看通过IDXGIOutputDuplication 实现的输出复制功能。您所做的是为您需要的视频适配器获取 DXGI 对象,枚举输出以找到所需的一个(或者如果您从多个屏幕同时捕获,则全部)并通过调用 IDXGIOutput1::DuplicateOutput 复制它。复制使您可以访问可以映射到 CPU 可读内存的 GPU 视频表面 - 所以是的,它被加速了。
Here 是 Microsoft 关于此问题的完整示例。
【讨论】:
我看到您需要解决非常具体的任务,我认为有一个非常接近您需求的解决方案。在“CodeProject”网站上有文章“CaptureManager SDK”。它包括 Media Foundation 用于流式桌面屏幕和输出扬声器缓冲区的有趣示例代码。它可以通过 MP4 格式流式传输到网络浏览器。我想你会觉得它很有趣。
【讨论】: