JAVA代码视频转GIF(亲测有效)

1.说明

本次使用的是JAVA代码视频转GIF,maven如下:

powershell 复制代码
 <dependency>
    <groupId>ws.schild</groupId>
     <artifactId>jave-nativebin-win64</artifactId>
     <version>3.2.0</version>
 </dependency>
 <dependency>
     <groupId>ws.schild</groupId>
     <artifactId>jave-core</artifactId>
     <version>3.1.1</version>
 </dependency>
 <dependency>
     <groupId>com.madgag</groupId>
     <artifactId>animated-gif-lib</artifactId>
     <version>1.4</version>
 </dependency>

整体代码如下:

java 复制代码
package src.controller;


import ws.schild.jave.Encoder;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.encode.VideoAttributes;
import ws.schild.jave.info.MultimediaInfo;
import ws.schild.jave.info.VideoInfo;
import ws.schild.jave.info.VideoSize;

import java.io.File;

public class VideoToGIf {

    //输出格式
    private static final String outputFormat = "gif";

    /**
     * 转化音频格式
     *
     * @param sourceFilePath : 源视频文件路径
     * @param targetFilePath : 目标gif文件路径
     * @return
     */
    public static void transform(String sourceFilePath, String targetFilePath) {
        File source = new File(sourceFilePath);
        File target = new File(targetFilePath);
        try {
            //获得原视频的分辨率
            MultimediaObject mediaObject = new MultimediaObject(source);
            MultimediaInfo multimediaInfo = mediaObject.getInfo();
            VideoInfo videoInfo = multimediaInfo.getVideo();
            VideoSize sourceSize = videoInfo.getSize();
            //设置视频属性
            VideoAttributes video = new VideoAttributes();
            video.setCodec(outputFormat);
            //设置视频帧率 正常为10 ,值越大越流畅 正常GIF有个30帧差不多了
            video.setFrameRate(30);
            //设置视频分辨率
            VideoSize targetSize = new VideoSize(sourceSize.getWidth() / 2, sourceSize.getHeight() / 2);
            video.setSize(targetSize);
            //设置转码属性
            EncodingAttributes attrs = new EncodingAttributes();
            attrs.setVideoAttributes(video);
            // 音频转换格式类
            Encoder encoder = new Encoder();
            encoder.encode(mediaObject, target, attrs);
            System.out.println("转换完成...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 批量转化视频格式
     *
     * @param sourceFolderPath : 源视频文件夹路径
     * @param targetFolderPath : 目标gif文件夹路径
     * @return
     */
    public static void batchTransform(String sourceFolderPath, String targetFolderPath) {
        transform(sourceFolderPath, targetFolderPath);
    }

    public static void main(String[] args) {
        //你的视频地址  和你想转的动图的地址
        batchTransform("d:\\Users\\xychenkj\\Desktop\\11\\1.mp4", "d:\\Users\\xychenkj\\Desktop\\11\\2.gif");
    }
}

附上截图:

2.注意事项

这个代码需要用到一个特殊的包,不然你复制我的代码肯定会报错,说没有:ffmpeg-amd64-3.1.1.exe这个文件。

因为我们需要这个程序去帮我们运行转换的逻辑。下面教学下怎么安装这个软件,不要去官网下了,墨迹死了,翻墙除外。要官网下载的直接百度即可,这里就不说了,我反正是直接去这种地址下载的,你要担心病毒啥的那确实需要谨慎,记得点立即下载,安全下载就是小丑了,一堆捆绑,相信长期混迹于下载圈的小伙伴根本就不会觉得这种地址下载东西麻烦。下面附上我下载好了可用的压缩包下载链接,帮你们省点心。

链接:https://pan.baidu.com/s/1AD9UtudCjjfWQEFdUVQhPg

提取码:gv5l

地址如下:

下载下来你自己找个地方解压,然后就是配置path了,就和java一样,配置到bin目录下

弄好了之后,需要验证下安装成功与否,

打开命令提示符窗口。输入命令"ffmpeg --version"。如果命令提示窗口返回FFmpeg的版本信息,那么就说明安装成功了。

这样就安装好了,然后你去跑代码,如果还不行,重启电脑!!!!,再试一下,我重启完就可以了。

相关推荐
行者962 分钟前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿蒙Amon13 分钟前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu18 分钟前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
SmartRadio30 分钟前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
2***d88531 分钟前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
五阿哥永琪31 分钟前
Spring中的定时任务怎么用?
java·后端·spring
gelald43 分钟前
AQS 工具之 CountDownLatch 与 CyclicBarry 学习笔记
java·后端·源码阅读
且去填词43 分钟前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派1 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
better_liang1 小时前
每日Java面试场景题知识点之-XXL-JOB分布式任务调度实践
java·spring boot·xxl-job·分布式任务调度·企业级开发