zoukankan      html  css  js  c++  java
  • 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));
    } } 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);
        }
  • 相关阅读:
    2018.4.5课堂笔记
    黑白染色——封锁阳光大学
    末日游戏——杨辉三角+搜索
    dilworth定理+属性排序(木棍加工)
    伯努利错装信封问题
    zhx'code1
    字符串-----KMP竟然是18禁
    Presto Event Listener开发
    Presto安装完成之后需要做的
    Apache Calcite 论文学习笔记
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14915380.html
Copyright © 2011-2022 走看看