我想使用java来使用FFMPEG或其他解决方案截取我的机器的屏幕截图.我知道linux可以在没有JNI的情况下使用ffmpeg,但在Windows中运行它不起作用并且可能需要(JNI?)是否有一些简单的Java类(以及其他任何必要的)的示例来捕获在Windows环境中可运行的屏幕截图?FFMPEG有替代品吗?我想以比Java Robot API更快的速度截取屏幕截图,我发现它可以用来截取屏幕截图,但速度比我想要的慢.
我知道在Linux中它的工作速度非常快:
import com.googlecode.javacv.*;
public class ScreenGrabber {
public static void main(String[] args) throws Exception {
int x = 0, y = 0, w = 1024, h = 768;
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(":0.0+" + x + "," + y);
grabber.setFormat("x11grab");
grabber.setImageWidth(w);
grabber.setImageHeight(h);
grabber.start();
CanvasFrame frame = new CanvasFrame("Screen Capture");
while (frame.isVisible()) {
frame.showImage(grabber.grab());
}
frame.dispose();
grabber.stop();
}
Run Code Online (Sandbox Code Playgroud)
这在Windows环境中不起作用.我不确定是否有某些方法可以使用相同的代码,但使用javacpp实际上可以使其工作,而无需更改上述代码.
目标是快速截取屏幕截图,但在截取"不同"的屏幕截图之后停止.屏幕因某些事件而改变,例如窗口关闭等等.
有没有办法让我在java中获取窗口的X和Y值?我读到我将不得不使用运行时,因为java不能直接混乱,但是我不太清楚如何做到这一点.谁能指出一些如何获得这个的链接/提示?