2016-02-17 54 views

回答

1

对于桌面屏幕截图,您应该查看通过IDXGIOutputDuplication实现的输出重复功能。你所要做的就是获得你需要的视频适配器的DXGI对象,枚举输出以找到需要的输出(或者全部如果你从多个屏幕同时捕获)并通过调用IDXGIOutput1::DuplicateOutput复制它。通过复制功能,您可以访问可以映射到CPU可读内存的GPU视频表面 - 因此,它可以加速。

Here是Microsoft在此问题上的完整示例。

+0

谢谢@Rudolfs,是的,我知道DXGI。 DXGI是否使用媒体基础的[视频捕捉](https://msdn.microsoft.com/en-us/library/windows/desktop/dd940439(v = vs.85).aspx)?或者这个类如何与DXGI相关?并且DXGI在Windows 7中不受支持。 – anurudh

+1

@anurudh - 这与视频捕获无关。 DXGI通过Direct3D而不是Media Foundation工作。是的,它不支持Windows 7 - 你必须使用Windows 7的旧方法。 –

+0

好的。我还在等待答案,视频采集可以用于屏幕捕获吗? – anurudh

0

我看到你需要解决非常具体的任务,我认为有一个解决方案非常接近你的需求。现场“CodeProject”中有文章“CaptureManager SDK”。它包括由Media Foundation提供的流式桌面屏幕和输出扬声器缓冲区的有趣示例代码。它可以通过MP4格式流式传输到网页浏览器。我认为你可以发现它很有趣。