java FFmpeg 图片生成视频

POM

如果版本有问题,就参考这个:http://bytedeco.org/download/

<!--  ffmpeg  -->
    <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));
//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);
    }

 

PS:关于smart-doc的小插曲

假设你使用 smart-doc生成接口文档,

请更换javacv-platform的版本!

<dependency>
      <groupId>org.bytedeco</groupId>
      <artifactId>javacv-platform</artifactId>
      <version>1.4.4</version>
    </dependency>

不然通过smart-doc会产生循环引用而无法生成文档!

posted @ 2021-06-21 19:42  正怒月神  阅读(1338)  评论(0编辑  收藏  举报