媒体基金会截图挂钩
Posted
技术标签:
【中文标题】媒体基金会截图挂钩【英文标题】:Media Foundation screenshot hook 【发布时间】:2018-01-13 22:16:33 【问题描述】:需要在正确的时间从应用程序中截取屏幕截图(它可以被阻止、折叠甚至在不同的会话中)。应用程序通过 Media Foundation 播放视频流:
据我了解是要拦截MFCreateMediaSession
,接收IMFMediaSession
是什么,只有这里用这个对象进一步做什么?可以从另一个线程访问它吗?
【问题讨论】:
您不太可能从折叠的应用程序中截取屏幕截图。此外,您的挂钩策略似乎也不可行。 【参考方案1】:我看到您在 Media Foundation 的基础上编写了用于播放视频的应用程序 - 您需要将视频图像作为单独的解码帧。所以,你有两个机会:
-
从渲染器获取视频帧:常规 Media Foundation 渲染器具有
IMFVideoDisplayControl
接口 - 在 MSDN 上 IMFVideoDisplayControl - 它有命令 GetCurrentImage
- 检索视频渲染器正在显示的当前图像的副本 - 在 MSDN @ 987654322@.
第二种方法 - 将样本采集器接收器附加到视频管道 - 媒体基础函数 MFCreateSampleGrabberSinkActivate
允许使用 IMFSampleGrabberSinkCallback 接口从样本采集器对象创建接收器 - 它允许在系统内存中以位图图像格式获取解码的视频图像。样品采集器的使用比较困难,我可以推荐我的项目Capturing Video from Web-camera on Windows 7 and 8 by using Media Foundation 来研究这种方式。
问候。
【讨论】:
以上是关于媒体基金会截图挂钩的主要内容,如果未能解决你的问题,请参考以下文章
使用媒体基金会时如何读取-“unsigned char const *”?