下載
參考網址?
【收藏級教程】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