I'm trying to create a screen recorder in java, my program, so far - captures an image every 142 milliseconds, what I need is to compress these images into an avi or mov file.
Here is my code so far (which I have compiled and ran, it works fine):
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.*;
import javax.imageio.ImageIO;
public class CFRecorder {
JButton button = new JButton("Record");
int delay = 142;
long count = 0;
boolean pause = false;
BufferedImage screencapture;
Thread record = new Thread(new Runnable() {
public void run() {
while(!pause) {
try {
screencapture = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
} catch(AWTException awt) { }
File file = new File("image"+count+".jpg");
count++;
try {
ImageIO.write(screencapture, "jpg", file);
Thread.sleep(delay);
} catch(IOException io) { }
}
}
});
public CFRecorder() {
JFrame frame = new JFrame("CFRecorder");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
record.start();
}
});
frame.add(button);
frame.pack();
frame.setSize(new Dimension(300, 200));
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new CFRecorder();
}
}