能力值:
( LV3,RANK:20 )
|
-
-
2 楼
其实我觉得printwindow更方便好用
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这种方式不行哇,当程序被遮挡时候,就不能截图了
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
。。。。。。printwindow截图是比较好用的,只要窗口不是最小化就行,你说的程序被遮挡以及超出屏幕都可以截。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢你的回答,不过你说的方法适合在关闭DirectDraw加速的情况啊,视频数据被绘制到DC上的情况,而WMP是利用directDraw加速的,这种方法不行。它是直接操作显存,在显存中输入数据。我是这样认为的,有问题的话,请指正
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
求做过相关项目的高手帮忙下。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
在顶一下
求高手啊
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
可能是我没理解你的意思,但是如果你只是想截WMP播放的视频截图,我不明白,你为什么不去掉视频加速功能再截,那样是可以的;如果视频文件在本地,那也可以直接利用AxWMPLib获取想要的你想要的任意帧,也是可以成功截的,这两种方法我都试过了都可以正常截。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
捕捉-〉处理-〉呈现,你的想法没有问题,建议仔细看看实现代码,是不是capture对象的参数设置错了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢你的帮助,要求就是对正在播放的WMP播放器进行屏幕截图(播放器有一定的透明度,直接通过DC截取的话也会透明),所以想通过Hook com技术截取Direct3D底层数据,实现视频截屏。顺便请问一下,你说关闭视频加速功能,是如何关闭的,可以在进程内关闭,不影响其他程序么?我已经找了很久资料了,都没有找到,郁闷 。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我仔细看了看,也没有什么问题。我在想wmp的视频渲染是不是没有通过它自己创建的后台缓冲区,因为那个缓冲区是:8*8的。如果没有通过这个缓冲区,它又会通过那些方法呢?并且,我还截取IDirect3DDevice::present函数,但是这个函数没有被执行过....
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
做过游戏截图的来看看哇
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
WMP 工具-选项-性能-视频加速-无,不过这样像你说的跟播放器的透明效果肯定是一样的。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
嗯,谢谢哈。我知道怎么解决了,我把IDirect3DDevice9Ex可能调用的函数全部截取了一遍,找到了原因了。
Media Foundation(DirectShow进化而来)不知道怎么创建了另外的Device。然后通过其他的Device创建后备缓冲区的。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
感谢楼上所有回答的人,要结贴了
|
|
|