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的版本信息,那么就说明安装成功了。

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

相关推荐
武子康3 分钟前
Java-206 RabbitMQ 发布订阅(fanout)Java 实战:推/拉模式、ACK 与绑定排错全梳理
java·分布式·消息队列·rabbitmq·rocketmq·java-rabbitmq·mq
llxxyy卢8 分钟前
反序列化之PHP
开发语言·php
hgz07109 分钟前
Nginx负载均衡策略详解与Session一致性解决方案
java·jmeter
清水白石00811 分钟前
以领域为中心:Python 在 DDD(领域驱动设计)中的落地实践指南
java·运维·python
雨落在了我的手上11 分钟前
C语言入门(三十一):预处理详解(1)
c语言·开发语言
BD_Marathon11 分钟前
关于JS和TS选择的问题
开发语言·javascript·ecmascript
风月歌21 分钟前
小程序项目之校园二手交易平台小程序源代码(源码+文档)
java·数据库·mysql·小程序·毕业设计·源码
YJlio25 分钟前
Python 一键拆分 PDF:按“目录/章节”建文件夹 + 每页单独导出(支持书签识别&正文识别)
开发语言·python·pdf
IT方大同26 分钟前
C语言进制转化
c语言·开发语言