1.说明
本次使用的是JAVA代码视频转GIF,maven如下:
<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>
整体代码如下:
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的版本信息,那么就说明安装成功了。
这样就安装好了,然后你去跑代码,如果还不行,重启电脑!!!!,再试一下,我重启完就可以了。