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 图片生成视频的主要内容,如果未能解决你的问题,请参考以下文章

java FFmpeg 图片生成视频

使用 ffmpeg 生成单个 MPEG-Dash 片段

ffmpeg图片转视频,图片+音频合成视频每秒一张图

使用ffmpeg视频切片并加密

一次用ffmpeg实现图片+音频合成视频的开发

使用 FFmpeg 通过管道输出视频片段