带有视频的窗口截图
Posted
技术标签:
【中文标题】带有视频的窗口截图【英文标题】:Screenshot of window with video 【发布时间】:2019-02-08 13:10:32 【问题描述】:在我的应用程序中,我使用 Media Foundation 来渲染来自网络摄像头的视频。带有视频的窗口是应用程序窗口的一部分,我想以编程方式将其作为一个整体进行截图。现在我正在尝试使用经典方法进行屏幕截图(将窗口的 dc 复制到位图),但视频窗口已从图片中排除。
PS1:当我使用 Print Screen 按钮为整个应用程序拍照时,它可以工作。包括视频窗口。
PS2:据我了解,Media Foundation 使用 Direct3D 11 来渲染视频。
【问题讨论】:
除非使用过滤器驱动程序否则不可能 afaik。 【参考方案1】:您应该使用 Desktop Duplication API 来捕获屏幕截图。复制 DC 是传统方法而不是经典方法,它可以出于充分的理由排除视频部分。
DirectX Screen Capture - Desktop Duplication API - limited frame rate of AcquireNextFrame请注意,如果播放器或应用程序明确要求将内容视为受保护内容(例如,启用 DRM 的视频播放应用程序或启用 DRM 的内容的媒体播放器就是这种情况),即使桌面复制也可以排除部分内容。
【讨论】:
感谢您的回答。但我一点也不聪明。有没有什么简单的方法可以在按下 PrintScreen 键后调用 Windows 调用的某些“屏幕截图功能”? Windows 是否使用此桌面复制 API? 我不知道 Print Screen 处理程序究竟做了什么,那么它不一定是您可用的方法。已知桌面复制运行良好,然后可以使用例如 WIC API 将图像保存到文件中(其他选项也可用,因为在某些时候您将保存 32 位 RGB 像素)。 桌面复制 API 的什么方法应该用于只为一个窗口(或最终整个桌面)拍照。我所能找到的只是我应该使用我无法获得的接口的 AcquireNextFrame 方法。AcquireNextFrame
为您提供一台显示器的图像,而不是窗口和桌面。我上面链接的问题给出了有关使用此方法获取接口的 API 的提示。以上是关于带有视频的窗口截图的主要内容,如果未能解决你的问题,请参考以下文章