图片生成视频
需要引入jar包
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>4.1.2-1.5.2</version>
<!-- 本机和Linux不同环境配置不一样 -->
<!-- <classifier>windows-x86_64</classifier>-->
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>openblas</artifactId>
<version>0.3.7-1.5.2</version>
<!-- <classifier>windows-x86_64</classifier>-->
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>4.2.1-1.5.2</version>
<!-- <classifier>windows-x86_64</classifier>-->
<classifier>linux-x86_64</classifier>
</dependency>
单个图片生成视频代码,可自行修改为多图生成视频
/**
* 图片生成视频
*
* @param mp4SavePath
* @param img
* @param second
* @throws FrameRecorder.Exception
*/
public static void createMp4(String mp4SavePath, File img, int second) throws FrameRecorder.Exception {
BufferedImage imgBuff = ImgUtil.read(img);
//视频宽高最好是按照常见的视频的宽高 16:9 或者 9:16
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, imgBuff.getWidth(), imgBuff.getHeight());
//设置视频编码层模式
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
//设置视频为25帧每秒
recorder.setFrameRate(25);
recorder.setFormat("mp4");
try {
recorder.start();
Java2DFrameConverter converter = new Java2DFrameConverter();
BufferedImage read = ImageIO.read(img);
for (int i = 0; i < second; i++) {
//一秒是25帧 所以要记录25次
for (int j = 0; j < 25; j++) {
recorder.record(converter.getFrame(read), avutil.AV_PIX_FMT_RGB32_1);
}
}
} catch (Exception e) {
System.out.println("图片生成视频异常 " + e);
} finally {
//最后一定要结束并释放资源
recorder.stop();
recorder.release();
}
}