当前位置: 首页 > news >正文

jaffree 封装ffmpeg 转换视频格式,获取大小,时间,封面

下载

参考网址 

【收藏级教程】FFmpeg音视频处理宝典:从入门到精通的50个实用技巧_ffmpeg教程-CSDN博客

配置环境变量

验证

重启idea开发工具

springboot maven集成

<dependency><groupId>com.github.kokorin.jaffree</groupId><artifactId>jaffree</artifactId><version>2023.09.10</version>
</dependency>

视频转换同时获取视频大小和时长

package org.jeecg.common.util;import com.github.kokorin.jaffree.StreamType;
import com.github.kokorin.jaffree.ffmpeg.*;import javax.imageio.ImageIO;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;public class JaffreeVideoConverter {static final AtomicLong durationMillis = new AtomicLong();static final AtomicLong durationMillis2 = new AtomicLong();public static void main(String[] args) {// 输入和输出文件路径Path input = Paths.get("D:/input.wmv");Path outputss = Paths.get("D:/231311.mp4");// 调用FFmpeg进行视频格式转换FFmpegResult result = FFmpeg.atPath().addInput(UrlInput.fromPath(input)).addOutput(UrlOutput.toPath(outputss)).setProgressListener(new ProgressListener() {@Overridepublic void onProgress(FFmpegProgress progress) {durationMillis.set(progress.getTimeMillis());durationMillis2.set(progress.getSize());}}).execute();System.out.println("Exact duration: " + durationMillis.get() + " milliseconds");//视频时长System.out.println("Exact duration22: " + durationMillis2.get() + " milliseconds");//视频大小System.out.println("视频格式转换完成!");}
}

获取视频封面

package org.jeecg.common.util;import com.github.kokorin.jaffree.StreamType;
import com.github.kokorin.jaffree.ffmpeg.*;import javax.imageio.ImageIO;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;public class JaffreeVideoConverter {public static void main(String[] args) {// 输入和输出文件路径Path input = Paths.get("D:/input.wmv");Path outputs = Paths.get("D:/");FFmpegResult result = FFmpeg.atPath().addInput(UrlInput.fromPath(input)).addOutput(FrameOutput.withConsumer(new FrameConsumer() {private long num = 1;@Overridepublic void consumeStreams(List<Stream> streams) {// All stream type except video are disabled. just ignore}@Overridepublic void consume(Frame frame) {// End of Streamif (frame == null) {return;}try {String filename = "frame_" + num++ + ".png";Path output = outputs.resolve(filename);ImageIO.write(frame.getImage(), "png", output.toFile());} catch (Exception e) {e.printStackTrace();}}})//控制截多少张图,这里我只需要截取一张.setFrameCount(StreamType.VIDEO, 1l)//每十秒截取一张 从0开始.setFrameRate(0.1).disableStream(StreamType.AUDIO).disableStream(StreamType.SUBTITLE).disableStream(StreamType.DATA)).execute();}
}

除此之外,还可以合成视频,截取视频等功能

Jaffree项目地址

https://gitcode.com/gh_mirrors/ja/Jaffree

相关文章:

  • 汤晓鸥:计算机视觉的开拓者与AI产业化的先行者
  • python数据分析(五):Pandas 数据检索技术
  • Android学习总结之Java篇(一)
  • 关于https请求丢字符串导致收到报文解密失败问题
  • java.lang.AssertionError: Binder ProxyMap has too many entries: 问题处理
  • 深入理解链表:从基础操作到高频面试题解析
  • Linux[开发工具]
  • 主流AI推理模型的详细说明、对比及总结表格
  • android录音生成wav
  • 铭记之日(3)——4.28
  • 【软件工程】需求分析详解
  • maven私服配置
  • 利用Python打印有符号十进制数的二进制原码、反码、补码
  • std::print 和 std::println
  • 万亿参数大模型网络瓶颈突破:突破90%网络利用率的技术实践
  • 【力扣刷题实战】丢失的数字
  • Java大师成长计划之第6天:Java流式API(Stream API)
  • Redis 小记
  • Cursor + Figma-Context-MCP ,让 Cursor 获取 Figma 设计图信息,实现 AI 生成页面的高度还原
  • 【3分钟准备前端面试】Hybrid开发 谷歌浏览器调试安卓app
  • 商务部新闻发言人就波音公司飞回拟交付飞机答记者问
  • 商务部:一季度我国服务贸易较快增长,进出口总额同比增8.7%
  • 药明康德一季度净利增长89%,在手订单增超四成至523亿元
  • 商务部:入境消费增长潜力巨大,离境退税有助降低境外旅客购物成本
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 教育强国建设基础教育综合改革试点来了!改什么?怎么改?