java FFmpeg 图片生成视频
Posted 正怒月神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java FFmpeg 图片生成视频相关的知识,希望对你有一定的参考价值。
POM
如果版本有问题,就参考这个:http://bytedeco.org/download/
<!-- ffmpeg -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp-platform</artifactId>
<version>1.5.5</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv-platform</artifactId>
<version>4.5.1-1.5.5</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>4.3.2-1.5.5</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv-platform-gpu</artifactId>
<version>4.5.1-1.5.5</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.5</version>
</dependency>
方法:
public static void pic2MovByFfmpeg(String mp4SavePath,String picturesPath, int width, int height) throws FFmpegFrameRecorder.Exception {
//视频宽高最好是按照常见的视频的宽高 16:9 或者 9:16
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height);
//设置视频编码层模式
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
//设置视频为1帧每秒
recorder.setFrameRate(1);
//设置视频图像数据格式
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);
recorder.setFormat("mp4");
File file = new File(picturesPath);
File[] flist = file.listFiles();
try {
recorder.start();
Java2DFrameConverter converter = new Java2DFrameConverter();
//录制一个22秒的视频
for (int i = 0; i < flist.length; i++) {
BufferedImage read = ImageIO.read(flist[i]);
recorder.record(converter.getFrame(read),avutil.AV_PIX_FMT_RGB32_1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//最后一定要结束并释放资源
recorder.stop();
recorder.release();
}
}
测试:
@Test
public void pic2movByFfmpeg() throws Exception {
String picPath="C:\\\\Users\\\\Tyler\\\\Postman\\\\files";
String videoPath="C:\\\\Users\\\\Tyler\\\\Downloads\\\\test.mp4";
FileHelper.pic2MovByFfmpeg(videoPath,picPath,640,480);
}
以上是关于java FFmpeg 图片生成视频的主要内容,如果未能解决你的问题,请参考以下文章