用Java实现抖音等各种小视频批量转换为gif动态图
本文主要介绍了Java用20行代码实现抖音小视频批量转换为gif动态图,分享给大家,具体如下:
本功能实现需要用到第三方jar包 jave,JAVE 是java调用FFmpeg的封装工具。
1、Java单类实现代码,复制到Spring boot项目中,用idea编辑器 主方法运行。
package com.naughty.userlogin02;
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;
public class VideoToGIf {//输出格式private static final String outputFormat = "gif";/*** 获得转化后的文件名** @param sourceFilePath : 源视频文件路径* @return*/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*/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*/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:\\Users\\tarzan\\Desktop\\video", "C:\\Users\\tarzan\\Desktop\\gif");}}
运行结果:
视频转换成功
maven地址:https://download.csdn.net/download/fo_xi/18470560
此文章有帮助到你吗?有问题随时交流!!!
用Java实现抖音等各种小视频批量转换为gif动态图相关推荐
- Java用20行代码实现抖音小视频批量转换为gif动态图【值得收藏】
效果图 本功能实现需要用到第三方jar包 jave,JAVE 是java调用FFmpeg的封装工具. spring boot项目pom文件中添加以下依赖 <!-- https://mvnrepo ...
- Android逆向之旅---Android中分析抖音和火山小视频的数据请求加密协议(IDA动态调试SO)
一.前言 最近萌发了一个做app的念头,大致什么样的app先暂时不说,后面会详细介绍这个app的开发流程和架构,不过先要解决一些技术前提问题,技术问题就是需要分析解密当前短视频四小龙:抖音,火山,秒拍 ...
- 抖小火山视频服务器维护中,抖音、火山小视频、悟空问答昨天都崩了
原标题:抖音.火山小视频.悟空问答昨天都崩了 导读 宕机属于电脑运作的一种正常现象,任何电脑都会出现这种情况,服务器也不例外. 刺猬公社 | 石灿 昨天下午6点左右,抖音.火山小视频和悟空问答崩了!头 ...
- video downloadhelper 无时间限制_Python实现超简单【抖音】无水印视频批量下载
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:python乱炖 转载: Python实现超简单[抖音]无水印视频批 ...
- 抖音智能剪辑,视频批量发布,多账号管理,抖音搜索排名系统源码搭建
抖音智能剪辑,视频批量发布,多账号管理,抖音搜索排名系统源码搭建: 申请流程: 注册官方开放平台账号--申请服务商---关联应用--申请权限---等待审核通过( 相关权限对接好,才能基于基础上开发,程 ...
- 爬虫进阶教程:抖音APP无水印视频批量下载
一.前言 本文为两类人准备:技术控和工具控. 如果你是工具控,想简单方便地下载无水印的视频,那么可以使用第三方去水印平台: 抖音短视频解析下载平台 如果你是技术控,想要使用自己写的代码下载视频,那么可 ...
- 抖音回应火山小视频被判赔腾讯800万元:目前已提起上诉
近日,因玩家未经腾讯授权直播<王者荣耀>游戏,火山小视频(现"抖音火山版")被广州知识产权法院认定侵权.法院一审判决平台停止直播相关游戏,并赔偿原告腾讯800万元. 对 ...
- 抖音、火山小视频通信协议加密算法
原文链接:https://www.jianshu.com/p/e3a65b527433 -------------------------------------------------------- ...
- 抖音 vs 即刻小视频(微信小视频)-竞品对比
玩了一段时间的抖音,然后最近又有微信推出来'即刻视频',又顺便体验了一段时间的即刻视频,作为一个80后的老阿姨,写点自己的体验.不喜勿喷,哈哈哈 关注点 抖音 即刻视频 入口 抖音APP 微信-我,下 ...
最新文章
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B. Little Artem and Grasshopper 模拟题...
- postgresql根据字符分割数据为多列
- 服务器网卡显示100m,千兆网线8根线都通了怎么还是显示100M,网卡都是能用1000M的...
- POJ 1741tree-点分治入门
- bzoj2752 高速公路
- Elasticsearch--高级-映射_修改映射 数据迁移---全文检索引擎ElasticSearch工作笔记019
- java 各组件单击总数_java 获取面板上有多少个组件
- 当你成为大龄码农时,你会怎么找你的出路?
- U盘文件夹乱码无法删除的原因及解决方案
- extjs java 教程_[Java教程]ExtJS 第一个程序
- Meterpreter命令详解
- OPENSSH格式的private key转换成RSA格式生成pem文件
- Guass-newton
- Kingston DataTraveler G2 U盘量产全纪录
- cataclysm【题解】【考试】
- Oracle数据操作和控制语言详解
- 每天5分钟玩转K8S (看书笔记)
- javaSE探赜索隐之三<类与对象的爱恨情仇中>
- 滴滴 NewSQL 演进之 Fusion 实践
- 群晖域名注册_手把手教你在群晖NAS上用自己的域名实现https访问