首页 > 技术知识 > 正文

效果图

Java用20行代码实现抖音小视频批量转换为gif动态图【值得收藏】

教程

本功能实现需要用到第三方jar包 jave,JAVE 是java调用FFmpeg的封装工具。

spring boot项目pom文件中添加以下依赖

<!– https://mvnrepository.com/artifact/ws.schild/jave-core –><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>3.1.1</version></dependency><!– 以下依赖根据系统二选一 –><!– win系统平台的依赖 –><dependency><groupId>ws.schild</groupId><artifactId>jave-nativebin-win64</artifactId><version>3.1.1</version></dependency><!– linux系统平台的依赖 –><dependency><groupId>ws.schild</groupId><artifactId>jave-nativebin-linux64</artifactId><version>3.1.1</version></dependency>
<

Java单类实现代码,复制到Spring boot项目中,用idea编辑器 主方法运行。

import ws.schild.jave.Encoder;import ws.schild.jave.EncoderException;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;import java.util.Arrays;publicclassVideoToGIf{//输出格式privatestaticfinalString outputFormat =“gif”;/** * 获得转化后的文件名 * * @param sourceFilePath : 源视频文件路径 * @return */publicstaticString getNewFileName(String sourceFilePath){File source =newFile(sourceFilePath);String fileName = source.getName().substring(0, source.getName().lastIndexOf(“.”));return fileName +“.”+ outputFormat;}/** * 转化音频格式 * * @param sourceFilePath : 源视频文件路径 * @param targetFilePath : 目标gif文件路径 * @return */publicstaticvoid transform(String sourceFilePath,String targetFilePath){File source =newFile(sourceFilePath);File target =newFile(targetFilePath);try{//获得原视频的分辨率MultimediaObject mediaObject =newMultimediaObject(source);MultimediaInfo multimediaInfo = mediaObject.getInfo();VideoInfo videoInfo = multimediaInfo.getVideo();VideoSize sourceSize = videoInfo.getSize();//设置视频属性VideoAttributes video =newVideoAttributes(); video.setCodec(outputFormat);//设置视频帧率 正常为10 ,值越大越流畅 video.setFrameRate(10);//设置视频分辨率VideoSize targetSize =newVideoSize(sourceSize.getWidth()/5, sourceSize.getHeight()/5); video.setSize(targetSize);//设置转码属性EncodingAttributes attrs =newEncodingAttributes(); attrs.setVideoAttributes(video);// 音频转换格式类Encoder encoder =newEncoder(); encoder.encode(mediaObject, target, attrs);System.out.println(“转换已完成…”);}catch(EncoderException e){ e.printStackTrace();}}/** * 批量转化视频格式 * * @param sourceFolderPath : 源视频文件夹路径 * @param targetFolderPath : 目标gif文件夹路径 * @return */publicstaticvoid batchTransform(String sourceFolderPath,String targetFolderPath){File sourceFolder =newFile(sourceFolderPath);if(sourceFolder.list().length !=0){Arrays.asList(sourceFolder.list()).forEach(e ->{ transform(sourceFolderPath +“\\”+ e, targetFolderPath +“\\”+ getNewFileName(e));});}}publicstaticvoid main(String[] args){ batchTransform(“C:\\Users\\tarzan\\Desktop\\video”,“C:\\Users\\tarzan\\Desktop\\gif”);}}
<
运行结果截图

再桌面建立video文件夹,将要转换的视频文件放入进去。(gif文件夹可以不建,程序会自动生成)

Java用20行代码实现抖音小视频批量转换为gif动态图【值得收藏】1

原视频文件

Java用20行代码实现抖音小视频批量转换为gif动态图【值得收藏】2

转化后的git文件

Java用20行代码实现抖音小视频批量转换为gif动态图【值得收藏】3

测试结果

视频格式为mp4,大小约4.77MB,转为同分辨率,帧率为5的gif文件,大小约4.70MB,转化时间1s左右。

猜你喜欢