如何在屏幕捕获程序中使用Java获得超过30FPS? [英] How to get over 30FPS using Java in a Screen Capture Program?

查看:134
本文介绍了如何在屏幕捕获程序中使用Java获得超过30FPS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在使用Java中的Robot类来记录屏幕。但是,它不能达到每秒30帧的最小值。我不会重新创建对象,并且尽可能高效,但我平均每秒只有15帧。机器人根本就没有削减它。

I'm currently using the Robot classes in Java to record the screen. However, it does not achieve the minimum of 30 frames per second. I'm not re-creating objects, and am being as efficient as I can, but I only average around 15 frames per second. Robot is simply not cutting it.

我可以用什么来捕捉屏幕?我已经尝试过Xuggle了,但我似乎无法获得足够快的捕获速度。

What can I use to capture the screen? I've tried Xuggle, but I can't seem to get that to capture fast enough either.

推荐答案

对于以下操作系统X11标准(Linux,FreeBSD,Solaris等),我们可以通过 JavaCV FFmpeg

For operating systems following the X11 standard (Linux, FreeBSD, Solaris, etc.), we can do it this way via 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 可以为您提供帮助。

I don't know about Windows or Mac OS X, but I suspect we would need to access native APIs directly. Nevertheless, JavaCPP could help with that.

这篇关于如何在屏幕捕获程序中使用Java获得超过30FPS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆