private void createCodec(VideoTrack vt) { Format fmt = vt.videoFormat; String enc = fmt.get(EncodingKey); if (enc.equals(ENCODING_AVI_MJPG) // || enc.equals(ENCODING_QUICKTIME_JPEG) // ) { vt.codec = new JPEGCodec(); } else if (enc.equals(ENCODING_AVI_PNG) // || enc.equals(ENCODING_QUICKTIME_PNG) // ) { vt.codec = new PNGCodec(); } vt.codec.setInputFormat( fmt.prepend( MediaTypeKey, MediaType.VIDEO, MimeTypeKey, MIME_JAVA, EncodingKey, ENCODING_BUFFERED_IMAGE, DataClassKey, BufferedImage.class)); vt.codec.setOutputFormat( fmt.prepend(MediaTypeKey, MediaType.VIDEO, EncodingKey, enc, DataClassKey, byte[].class)); // vt.codec.setQuality(vt.videoQuality); }
public void write(int track, BufferedImage image, long duration) throws IOException { VideoTrack t = tracks.get(track); if (t.inputBuffer == null) { t.inputBuffer = new Buffer(); } if (t.outputBuffer == null) { t.outputBuffer = new Buffer(); } t.inputBuffer.setFlagsTo(KEYFRAME); t.inputBuffer.data = image; t.codec.process(t.inputBuffer, t.outputBuffer); write(track, t.outputBuffer); }