我们先来分析一下原因:
这里引用一段话:
对于不少视频播放软件来说,他们都是使用 direct show 来快速显示视频的,这种视频画面,一般的 screen capture 是无法截取的,只能通过一个 hook 来实现对 layer 层的截取,而且效果非常差,对于一个 24ps 的视频,占用 cpu 非常高. (kmp,smplayer,qvod,qq影音都使用 driect show. 但非常奇怪,暴风影音不是使用 direct show(我估计是使用 direct3d 或者opengl ), 可用 print screen 截取的。 但是,QQ 为什么可以截取呢,它有没有使用 hook 技术呢? 我看过他们的 dll ,应该是没有的,而且使用 hook 的前提是这个钩子(hook)要先于其它程序运行,所以 QQ 不可能使用 hook 技术。那 qq 如何截取 direct show 的图像呢。大家有没有发现,对于在线远程协助,其实是无法看到 direct show 的图像的。而普通的截一个图,这个其实 QQ 是通过禁用 direct show (即 dixdiag 中,禁用 directx 加速来实现的,大家不会写代码的话,可自己禁用 dixrectx 加速试试,是可以截屏的)
究其原因,都是Windows平台下的硬件加速功能惹的祸。
怎么解决这个问题呢?
1、最简单的方法:
比如想截取电影的图片,开一个播放窗口截到的图是一片黑,那我们就再开一个窗口,这时第二个窗口就可以截取到正常的图了。
2、禁用 硬件加速
右键单击桌面,屏幕分辨率。 点击高级设置。 单击疑难解答,更改设置,把指针从完全拖到无。 点击确定。 如果没有以上设置,就说明你的硬件或者驱动不支持硬件加速。
时间: 2024-11-10 17:36:16