媒体基金会截图挂钩

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 来研究这种方式。

问候。

【讨论】:

以上是关于媒体基金会截图挂钩的主要内容,如果未能解决你的问题,请参考以下文章

媒体基金会 AMR 解码

使用媒体基金会时如何读取-“unsigned char const *”?

UWP,媒体基金会,选择特定编码器

媒体基金会 EVR 和 DirectX 11

媒体基金会音频/视频捕获到 MPEG4FileSink 产生不正确的持续时间

大龄程序员找工作屡碰壁,感慨人到中年不如狗;Node.js基金会和JS基金会合并;CakePHP 3.7.0发布