Robot()背后的技术背后原因是什么.createScreenCapture()速度如此之慢?

时间:2013-02-05 02:29:38

标签: java

我一直在尝试构建一个屏幕录制器来练习我萎缩的Java技能(尽管已经有太多了)。

然而,我遇到了机器人类的速度非常慢的问题 - 即使在我的i7驱动的机器上也可能大约15fps,并且在我的macbook上爬行4-5fps。我用Python构建了一个工作记录器,通过使用PIL抓取快照,至少能够达到可靠的20-24fps。

所以,我很好奇,班级这么慢的技术原因是什么?

此外,其他屏幕录像机如何工作? Screencast-o-matic是Java,似乎表现良好。我假设有一些方法可以连接底层操作系统,并从缓冲区或其他东西中删除所有东西?我认为必须有一些非常快速的方法来获取屏幕上绘制内容的副本 - 毕竟,操作系统足够快,可以在进行多次其他计算之后多次绘制屏幕!似乎从一个地方到另一个地方复制一系列颜色应该是一个相对便宜的操作。

我决心不放弃!我只是不知道我需要知道什么才能真正深入了解建立一个合适的录音机。

1 个答案:

答案 0 :(得分:1)

我不完全确定。但仍然是一个非常可能的原因。

操作系统: 操作系统已经绘制了屏幕。它让人感觉到,它有图形存储,直到出现新的东西。可以很容易地保存图形。

java Robot: 机器人在存储数据之前会收集数据。屏幕截图使用Method。方法是getPixelColor()。它会在屏幕上显示所有像素。在高清屏幕上,该方法被称为921600次(1280 * 720),这需要时间加上需要压缩成图像并保存。