视频批量转换成GIF
使用ws.schild工具包对视频和音频进行转码、裁剪以及提取操作。
1.引入依赖
<!--视频转gif依赖--><dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.0.1</version></dependency>
2.代码实现
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;/*** @author cyh* @date 2022/11/12 16:34*/
public class VideoToGIf {//输出格式private static final String outputFormat = "gif";/*** 获得转化后的文件名* @param sourceFilePath 源视频文件路径* @return java.lang.String* @author cyh* @date 2022/11/12 17:01*/public static String getNewFileName(String sourceFilePath) {File source = new File(sourceFilePath);String fileName = source.getName().substring(0, source.getName().lastIndexOf("."));return fileName + "." + outputFormat;}/*** 转化音频格式* @param sourceFilePath 源视频文件路径* @param targetFilePath 目标gif文件路径* @return void* @author cyh* @date 2022/11/12 17:00*/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 ,值越大越流畅video.setFrameRate(10);//设置视频分辨率VideoSize targetSize = new VideoSize(sourceSize.getWidth() / 5, sourceSize.getHeight() / 5);video.setSize(targetSize);//设置转码属性EncodingAttributes attrs = new EncodingAttributes();attrs.setVideoAttributes(video);// 音频转换格式类Encoder encoder = new Encoder();encoder.encode(mediaObject, target, attrs);System.out.println("= =转换成功= =");} catch (EncoderException e) {e.printStackTrace();}}/*** 批量转化视频格式* @param sourceFolderPath 源视频文件夹路径* @param targetFolderPath 目标gif文件夹路径* @return void* @author cyh* @date 2022/11/12 17:00*/public static void batchTransform(String sourceFolderPath, String targetFolderPath) {File sourceFolder = new File(sourceFolderPath);if (sourceFolder.list().length != 0) {Arrays.asList(sourceFolder.list()).forEach(e -> {transform(sourceFolderPath + "\\" + e, targetFolderPath + "\\" + getNewFileName(e));});}}public static void main(String[] args) {batchTransform("C:\\video", "C:\\video");}
}
最后的结果:
视频批量转换成GIF相关推荐
- 用MATLAB将bilibili缓存视频批量转换成MP4的方法
1.下载和安装ffmpeg详情参考博客 https://blog.csdn.net/weixin_41690708/article/details/90237568 下载地址:http://ffmpe ...
- 视频(mp4文件)批量转换成动图(gif文件)
目录 1. 按 2. 使用说明 3. 下载 4. 源码 1. 按 本软件为本人自主开发的,相较于市面上的软件来说,具有转换速度快.转换后的gif文件体积小.质量高等特点.另外由于软件自动推导任务,所以 ...
- 竖版视频怎么批量转换成横版视频
如果我们在发布视频素材的过程中遇到发布不成功的情况,要怎么解决呢?大家可以看看是不是因为不支持横版视频播放的原因呢?今天小编就来分享一下怎么快速将横版视频快速转换成竖版视频,感兴趣的小伙伴快跟着来看看 ...
- 如何把视频语音转换成文字呢?
视频语音转换成文字操作实际上是将视频中的音频语言转换成文本形式.如果正常要实现这种操作,我们一般需要先了解视频在讲解什么,然后再手动整理内容.但其实这个操作是需要时间的.而现在我们只需要一些转换工具就 ...
- flv格式视频怎么转换成mp4
在我们使用视频文件的时候,不免有遇到flv格式的时候,这是一种具有版权保护的视频格式,其特点是体积小,加载的速度快,很适用于在网络上传输分享.但是flv格式的兼容性,却给很多人带来了无法播放视频文件的 ...
- 手机php文件怎么换成mp3,视频格式转换成mp3 手机视频转成mp3格式
有的朋友问视频能转换成mp3吗?对于这个问题的回答是肯定的:当然能!那么怎么把视频转换成mp3格式呢,大家先别急,让我慢慢的说.有时候看视频很喜欢里面的背景音乐,所以就把视频里的音频提取出来了,用来当 ...
- mov视频怎么转换成mp4?
今天来给大家分享一个非常实用的纯干货办公技巧,主题是mov视频怎么转换成mp4?传统的方法是把mov视频的后缀直接转换成MP4格式,实际上这是一种已被淘汰的格式转化方法,经过很多网友的测试,发现这个方 ...
- swf格式的视频怎么转换成mp4
有经验的小伙伴都知道,视频的格式是多种多样的,每种视频都有一种属于自己的格式,视频格式的应用领域也比较广泛,所以我们在使用不同的领域的不同视频格式时也要区别对待.比如在网页设计或者动画制作领域中所应用 ...
- flv视频怎么转换成mp4格式?
现在的短视频发展真的是越来越完善,很多人都靠刷视频来打发时间,小编也是这样的,没事刷一刷视频中的影视剧,那些带有讲解的视频,会让我快速看懂内容,比起自己去思考,感觉省了好多事,并且很有深度.这些讲解的 ...
最新文章
- Webpack 4 + React + Typescript 搭建启动模版
- mysql unsupported data type._数据查询Unsupported command错误
- Noip 2013 练习
- Linux问题分析与性能优化
- 头条白板面试_如何在白板上组织您的想法并粉碎技术面试
- Dropping tests
- 什么叫做展望_开学季:有一种爱, 叫做爸妈给你塞的行李箱!(附大学新生行李箱应怎么选?)...
- python矩阵_Python矩阵
- unity现代人物含代码动画_Unity Animation--动画系统概述
- 什么是波特率,波特率怎么计算
- Python批量自定义文件夹图标
- 美团外卖移动端性能监测体系实现
- 【浏览器修改请求头】该地址不支持在浏览器打开,如需访问, 请使用微信扫描下方二维码
- MOS管开关速度相关参数
- 物联网开发笔记(30)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕显示二维码(ST7789芯片)
- VC++图形平移功能的实现
- 为什么引入非线性激励函数?
- 不要被假相迷惑-有意思的声卡驱动
- mysql第二天无法连接_MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:...
- 元启发式如何跳出局部最优?