如何获得基于硬件的屏幕截图?

时间:2020-03-06 14:29:53  来源:igfitidea点击:

过去,我的某些项目要求我创建全屏Flash应用程序的电影版本。最简单的方法是获取屏幕截图。但是,捕获超过1024x768的任何值都会导致视频断断续续,这是不可接受的。我了解有一些用于捕获全屏视频的基于硬件的解决方案,但我无法找出它们是什么。我的输出需要可扩展到1920x1080,并导致未压缩的AVI文件没有断断续续。

解决方案

幸运的是,图形适配器已经具有模拟视频输出。我们可以连接DVD刻录机,然后在独立的硬件盒上数字化视频信号。

那不会给你1920x1080。

如果我们确实需要获得比DVD分辨率更高的捕获效果,则需要专业的(而且价格昂贵的)视频捕获设备。

顺便说一句,如果我们想以未经压缩的每秒30帧的速度捕获真彩色1920x1080,则必须以某种方式每秒存储约237 MB。只是为了让我们了解必须处理多少数据...

Phillips dvdr3575h和其他机顶盒可能是最简单的。但是,我不认为他们支持我们正在寻找的分辨率。

各种专业产品支持全高清捕获:

http://www.decklink.com/products/hd/

http://www.aja.com/

还有其他捕获完整的,未压缩的数字或者模拟流是非常沉重的要求。

-亚当

如果Flash应用程序是非交互式的,则有许多工具可以对AVI文件或者一系列PNG进行非实时捕获(但完全平滑且完美)。

如果它是交互式的,并且我们绝对需要实时捕获,则FRAPS实际上可能能够完成这项工作,至少在Vista上如此,通过使用Aero作为图形层,通常很难操纵FRAPS来记录各种非DirectShow应用程序。

如果将影片加载到Flash ActiveX控件中,则可以在控件上调用IViewObject :: Draw方法(或者OleDraw帮助函数)以将其绘制到所选的DC中并遍历动画中的每个帧。提取音频会更加困难,但是如果我们是内部制作动画的话,那应该不会太麻烦。

如果不需要在影片中单击,则Flash CS3支持Flash影片(包括脚本化内容)的逐帧导出。

如果没有.fla,请打开Flash中的动画,然后制作一个简单的包装程序来加载swf也可以。
然后转到文件->导出->导出影片,然后选择Quicktime。根据喜好设置各种杂乱无章的位,然后Flash会尽快浏览动画,从而节省了丢帧的风险,也不必等待1 fps的捕获。

http://rgb.com/
我在高端/昂贵但完美的视频之前就已经看过他们的产品,它是一种硬件解决方案,因此在我们要进行演示的机器上不需要占用大量处理器。