Skip to content

Instantly share code, notes, and snippets.

@jeremyxu2010
Created March 28, 2016 15:17
Show Gist options
  • Save jeremyxu2010/256a7e67942d3499d3ac to your computer and use it in GitHub Desktop.
Save jeremyxu2010/256a7e67942d3499d3ac to your computer and use it in GitHub Desktop.
使用JavaCV完成h264编码的视频文件的编码
import org.bytedeco.javacpp.avcodec;
import org.bytedeco.javacpp.avutil;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.FrameRecorder;
import org.bytedeco.javacv.Java2DFrameConverter;
import java.awt.*;
import java.awt.image.BufferedImage;
public class JavaCVMp4EncodeTest
{
public static void main( String[] args ) throws FrameRecorder.Exception {
String finalVideoPath = "/tmp/test.mp4";
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(finalVideoPath, 1024,768);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setFrameRate(25.0);
recorder.setVideoBitrate((int)((1024*768*25)*2*0.07));
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);
recorder.setFormat("mp4");
recorder.start();
BufferedImage img = new BufferedImage(1024, 768, BufferedImage.TYPE_INT_RGB);
Java2DFrameConverter java2dConverter = new Java2DFrameConverter();
Graphics2D g2 = (Graphics2D)img.getGraphics();
for (int i = 0; i <= 25 * 20; i++) {
g2.setColor(Color.white);
g2.fillRect(0, 0, 1024, 768);
g2.setPaint(Color.black);
g2.drawString("frame " + i, 100, 250);
recorder.record(java2dConverter.convert(img));
}
recorder.stop();
recorder.release();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment