求解释QQ视频或者flash截图的设计思路和方法

goalcn 2010-06-21 02:14:31
QQ的视频或者flash截图功能(首先选择好播放器窗口,然后双击截图,10秒后自动保存成动态gif格式,大概几十zhen),怎么实现的,有什么思路和方法,越明确具体越好。

说明:
1、GDI那种方法不适用,截取视频或者动态的话会是黑的
2、是截取第三者程序播放的视频,如果自己是播放器,自己来截图,这个可以通过directshow来实现。我要问的不是这种情况,而是第三者程序,对某些播放器比如暴风正在播放的视频来截图,控制好抓取频率,一定时间后再给合成为GIF动画。

好答案马上给分,本人结贴率高。
...全文
227 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rageliu 2010-06-23
  • 打赏
  • 举报
回复
看专题开发版块也看到这个问题,呵呵。最近正好在写个这样的软件,不过还没写到播放器截图这个模块,不过我有计划要写的,目前主要实现了针对游戏的ddraw d3d8 d3d9 opengl等的录制。对于播放器,我的看法是:

1。没用过qq那个,在qq录视频的过程中,看看dxdiag里的硬件加速是否被关闭了。或是在它录的过程中,用print截屏,看这时候截的视频是否依然是黑屏。
2。很多人说到mirror,但是这个确实是会关闭硬件加速的。
3。目前很多视频显示,其实都是用的ddraw或是d3d,所以可以hook他它们做处理,目前我的软件已经支持了这两个,不过我没有测试过播放器。
4。也就是大家说的ds filter方式,目前的主流播放器,基本都是基于ds的,所以通用性还是没大问题。我以前做过hook方式插入自己的filter,确实可以被连接,叠加自己的文字,图片等等都没问题,但是前提是,智能render。如果是手动连接的话,就要做更多的处理。需要在Run前找一个合适的时机,遍历filter和pin,在适当的地方插入你的filter,比如发现有overlay,一定要把自己的filter插入到它的前面,不然处理不到数据。再有,这个要求你对filter有比较深入的理解,不然问题会很多,比如崩溃/花屏等等很多问题。

暂时想到这些,我后面会开发这个功能,我的想法也是filter形式。
关于ds/filter/播放器等方面问题,一直做这方面的,有点心得,可以讨论
xiezonglin 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiuxianshen 的回复:]
如果是第三方软件截屏的话,直接获得播放的图像数据不太现实,除非破解了
找一些成熟的截屏算法,然后通过找到播放的软件窗口,获得其播放视区,然后通过定时器来截屏看看
有点像外挂的样子,必须在第三方软件运行前先启动准备好
[/Quote]
qq的视频截图好像没你说的复杂啊,随时可以截的
goalcn 2010-06-22
  • 打赏
  • 举报
回复
111
flyriver2000 2010-06-21
  • 打赏
  • 举报
回复
记号
不错
xiuxianshen 2010-06-21
  • 打赏
  • 举报
回复
如果是第三方软件截屏的话,直接获得播放的图像数据不太现实,除非破解了
找一些成熟的截屏算法,然后通过找到播放的软件窗口,获得其播放视区,然后通过定时器来截屏看看
有点像外挂的样子,必须在第三方软件运行前先启动准备好
wwgddx 2010-06-21
  • 打赏
  • 举报
回复
可以用dx开发,读取表面数据。 如果直接用GDI截图(操作方法很简单),对于视频,只有在未开启硬件加速的情况下才能截到屏。

另外可以看下这篇文章, 看能不能给你点启发.
http://www.jcwcn.com/html/Win2000NT/00_48_20_344.htm
hucailai 2010-06-21
  • 打赏
  • 举报
回复
VFW好像可以实现你的需求。
goalcn 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hucailai 的回复:]
恩,我刚才试了下,用print screen是黑的。
看看能不能用directdiaw直接读显存数据。
[/Quote]
自己用directdraw写个播放器,然后截图,这个是可以的
现在问题是开个第三者程序,怎么截取任意媒体播放器正在播放的视频截图
hucailai 2010-06-21
  • 打赏
  • 举报
回复
恩,我刚才试了下,用print screen是黑的。
看看能不能用directdiaw直接读显存数据。
goalcn 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hucailai 的回复:]
黑的,应该不是用了GDI的原因吧。
由DC到位图会黑吗?
[/Quote]

很多视频播放都采用了硬件加速,所以输出的时候都有一个overlay,就像个蒙版,你虽然能看到,但是用正常截图方法捕获不了
hucailai 2010-06-21
  • 打赏
  • 举报
回复
黑的,应该不是用了GDI的原因吧。
由DC到位图会黑吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧