〇、前情提要
完成了视频上传,接下来是给上传的视频保存一张同名的jpg文件在同样文件夹中,并且获取到视频的分辨率。
macOS Catalina 10.15.1
ffmpeg version 4.3.1
Eclipse
参考:
- 【FFmpeg】mac系统安装FFmpeg并对视频进行转码、对视频截图、对视频压缩
https://blog.csdn.net/weixin_43210113/article/details/109802138 - ✨java+ffmpeg使用记录
https://blog.csdn.net/u011424614/article/details/108006131 - Download FFmpeg
http://ffmpeg.org/download.html - 【王仔编程】22期.FFmpeg截取视频帧
https://www.bilibili.com/video/BV16t411T7YX?from=search&seid=6597950623021114962 - 简单粗暴:Java 使用 FFmpeg 获取视频的分辨率 Java获取视频的时长 Java获取视频的编码格式
https://blog.csdn.net/q2450751976/article/details/103993096 - Java - split()函数和trim()函数的用法
https://blog.csdn.net/caroline_wendy/article/details/24465141 - 我的文章:【FFmpeg】java实现利用ffmpeg视频上传转码同时截取一帧保存为同名图片,并获取视频分辨率(补充部分)
https://blog.csdn.net/weixin_43210113/article/details/110425390
一、基础知识
参考:
Java使用FFmpeg处理视频文件指南
https://blog.csdn.net/mickle_zhang/article/details/105481917
安装
参考我以前的文章,对FFmpeg基础操作:
【FFmpeg】mac系统安装FFmpeg并对视频进行转码、对视频截图
https://blog.csdn.net/weixin_43210113/article/details/109802138
安装完毕后可以不在项目中导包了
二、✨java+ffmpeg使用记录
再次感谢该文作者,解决了我入门关。
参考:
java+ffmpeg使用记录
https://blog.csdn.net/u011424614/article/details/108006131
创建一个ffmpeg文件夹
- 执行命令的任务工具类
CommandTask.java
用来编写执行command任务的工具 - 测试类
FFmpegTest.java
用来编写用ffmpeg执行的语句
创建执行命令的任务工具类 CommandTask.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
/**
* 执行命令的任务工具
* */
public class CommandTask {
/**
* 执行命令
* @param command 命令
* */
public static void exeute(List<String> command) throws IOException {
// 执行命令
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start(); // 开始执行
InputStream errorStream = process.getErrorStream(); // 字节流
InputStreamReader inputStreamReader = new InputStreamReader(errorStream); // 字节流和字符流的中介
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 字符流
String line = "";
while ((line = bufferedReader.readLine()) != null){
System.out.println(line); // 输出转换过程
}
// 关闭流
if(bufferedReader != null){
bufferedReader.close(); }
if(inputStreamReader != null){
inputStreamReader.close(); }
if(errorStream != null){
errorStream.close(); }
}
}
创建测试类 FFmpegTest.java
package com.demo.ffmpeg;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
public class FFmpegTest {
public static void main(String[] args) {
String ffmpegPath = "C:\\ffmpeg20200809\\bin\\ffmpeg.exe";
String inputVideoPath = "C:\\ffmpeg20200809\\bin\\input.mp4";
String outputVideoPath = "C:\\ffmpeg20200809\\bin\\output.avi";
// 组装 格式转换 命令
List<String> command = new LinkedList<>();
command.add(ffmpegPath);
command.add(