It may not be easy for readers to get the old jcodec-0.1.5.jar for what I have done in the last post. I tried to work out for a newer solution but found that the latest version did change quite a lot. The latest jcodec source is 0.2.0. I built the latest two files for the Processing test
- jcodec-0.2.0.jar
- jcodec-javase-0.2.0.jar
You can download a compressed file of the code folder where you can drop and extract inside the Processing sketch folder. The Processing codes also change to reflect the class structure. Here it is.
// Save video file import processing.video.*; import org.jcodec.api.awt.AWTSequenceEncoder8Bit; import java.awt.image.BufferedImage; import java.io.File; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.log4j.BasicConfigurator; static Logger log; Capture cap; AWTSequenceEncoder8Bit enc; String videoName; String audioName; boolean recording; void setup() { size(640, 480); background(0); log = LoggerFactory.getLogger(this.getClass()); BasicConfigurator.configure(); cap = new Capture(this, width, height); videoName = "bear.mp4"; recording = false; int fRate = 25; frameRate(fRate); cap.start(); try { enc = AWTSequenceEncoder8Bit.createSequenceEncoder8Bit(new File(dataPath(videoName)), fRate); } catch (IOException e) { e.printStackTrace(); } } void draw() { image(cap, 0, 0); if (recording) { BufferedImage bi = (BufferedImage) cap.getNative(); try { enc.encodeImage(bi); } catch (IOException e) { e.printStackTrace(); } } } void captureEvent(Capture c) { c.read(); } void mousePressed() { recording = !recording; log.info("Recording : " + recording); } void keyPressed() { if (keyCode == 32) { try { enc.finish(); } catch (IOException e) { e.printStackTrace(); } } } |