1

我是java编程语言的初学者,最近我有一个从视频文件中捕获帧的工作,我还开发了一个程序,但是当视频在任何播放器的帮助下在屏幕上播放时它会这样做.

我已经开发了以下程序来做到这一点。

public class Beginning implements Runnable {

    private Thread thread;
    private static long counter = 0;
    private final int FRAME_CAPTURE_RATE = 124;
    private Robot robot;

    public Beginning() throws Exception {
        robot = new Robot();
        thread = new Thread(this);
        thread.start();
    }

    public static void main(String[] args) throws Exception {
        Beginning beginning = new Beginning();
    }

    public void run() {
        for (;;) {
            try {
                Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
                BufferedImage bufferedImage = robot.createScreenCapture(screenRect);
                ImageIO.write(bufferedImage, "png", new File("D:\\CapturedFrame\\toolImage" + counter + ".png"));
                counter++;
                thread.sleep(FRAME_CAPTURE_RATE);
            } catch (Exception e) {
                System.err.println("Something fishy is going on...");
            }
        }
    }
}

我的先生告诉要从任何指定的视频中捕获所有帧而不在屏幕上播放,谁能建议我该怎么做。

4

1 回答 1

1

好吧,您可以简单地使用 OpenCV。这是一个例子。

https://www.tutorialspoint.com/opencv/opencv_using_camera.htm

您可以使用任何视频代替 VideoCapture 类中的相机,如下所示:

VideoCapture capture = new VideoCapture(0);

而不是上面的代码行,你可以使用

VideoCapture capture = new VideoCapture("/location/of/video/");

我希望这就是你要找的。

于 2020-06-28T10:19:31.393 回答