如何使用 DirectShow API 捕获桌面位图,不包括我的捕获应用程序?
Posted
技术标签:
【中文标题】如何使用 DirectShow API 捕获桌面位图,不包括我的捕获应用程序?【英文标题】:How can I capture desktop bitmap excluding my capturing application using DirectShow APIs? 【发布时间】:2017-01-19 20:37:40 【问题描述】:我想在我的应用程序下方捕获屏幕的位图。 我的应用程序是***窗口。 我在 *** 上找到了一个帖子:-How can I capture screen under my own window excluding my own window
我已按照上述帖子的最后一个答案,但在捕获过程中我的捕获应用程序持续闪烁。
是否有任何解决方案可以使用 DirectShow API 捕获我的***捕获应用程序下方的屏幕位图而不会导致闪烁? 捕获的视频不应包含我的捕获应用程序的任何 GUI 元素。
【问题讨论】:
【参考方案1】:这本质上是您之前的问题 How can I omit capturing of a button/region using DirectShow APIs? 的重复,您可以通过添加新的详细信息和链接参考来扩展它。
尽管如此,DirectShow API 不提供任何桌面捕获功能。它的CPushSourceDesktop Sample 确实提供了一个接近的东西:它证明了使用 GDI API 获得的桌面图像可以使用 DirectShow 流式传输为视频。也就是说,无论如何都没有使用 DirectShow API 进行桌面捕获。
使用 GDI,您需要为应用程序 UI 下方的窗口强制重新绘制窗口。您可以通过隐藏您的应用程序并因此闪烁来做到这一点。其他方法包括请求绘制到辅助 DC 中,这不适用于所有应用程序,并且需要您自己从单独的窗口进行图像合成 - 然后您可以使用 DirectShow 流式传输结果。
【讨论】:
以上是关于如何使用 DirectShow API 捕获桌面位图,不包括我的捕获应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
以高分辨率从网络摄像头捕获图片,同时使用 DirectShow.Net 以较低的分辨率进行预览
如何从WDM流音频源(Realtek HD Audio)捕获