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);
        }
  • 相关阅读:
    Laravel 初始化
    ant design pro 左上角 logo 修改
    请求到服务端后是怎么处理的
    Websocket 知识点
    王道数据结构 (7) KMP 算法
    王道数据结构 (6) 简单的模式匹配算法
    王道数据结构 (4) 单链表 删除节点
    王道数据结构 (3) 单链表 插入节点
    王道数据结构 (2) 单链表 尾插法
    王道数据结构 (1) 单链表 头插法
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14915380.html
Copyright © 2011-2022 走看看