我目前正在使用 Java 中的 Robot 类来录制屏幕。但是,它没有达到每秒 30 帧的最低要求。我不会重新创建对象,并且会尽可能高效,但平均每秒只有 15 帧左右。机器人根本就不会切割它。
我可以使用什么来捕获屏幕?我尝试过 Xuggle,但我似乎也无法以足够快的速度进行捕捉。
对于遵循 X11 标准的操作系统(Linux、FreeBSD、Solaris 等),我们可以通过以下方式做到这一点JavaCV and FFmpeg:
import com.googlecode.javacv.*;
public class ScreenGrabber {
public static void main(String[] args) throws Exception {
int x = 0, y = 0, w = 1024, h = 768; // specify the region of screen to grab
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();
}
}
我不了解 Windows 或 Mac OS X,但我怀疑我们需要直接访问本机 API。尽管如此,JavaCPP可以帮忙。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)