From b6783b702577eb9812efd46c91a12a0951838df3 Mon Sep 17 00:00:00 2001 From: pancm <1060589146@qq.com> Date: Thu, 8 Jun 2023 11:24:10 +0800 Subject: [PATCH] add ffmpeg --- .../java/com/pancm/ffmpeg/FFmpegTest.java | 66 ++++++++++++++++++ .../java/com/pancm/ffmpeg/FFmpegUtil.java | 69 +++++++++++++++++++ .../java/com/pancm/ffmpeg/package-info.java | 9 +++ 3 files changed, 144 insertions(+) create mode 100644 src/main/java/com/pancm/ffmpeg/FFmpegTest.java create mode 100644 src/main/java/com/pancm/ffmpeg/FFmpegUtil.java create mode 100644 src/main/java/com/pancm/ffmpeg/package-info.java diff --git a/src/main/java/com/pancm/ffmpeg/FFmpegTest.java b/src/main/java/com/pancm/ffmpeg/FFmpegTest.java new file mode 100644 index 0000000..75d8674 --- /dev/null +++ b/src/main/java/com/pancm/ffmpeg/FFmpegTest.java @@ -0,0 +1,66 @@ +package com.pancm.ffmpeg; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * @author pancm + * @Title: FFmpegTest + * @Description: FFmpeg获取视频图片 + * 调用FFmpeg的命令获取ts视频的图片 + * @Version:1.0.0 + * @Since:jdk1.8 + * @Date 2021/4/14 + **/ +public class FFmpegTest { + + + public static void main(String[] args) { + + String ffmpegExePath = "C:\\ffmpeg\\bin\\ffmpeg.exe"; + + String inputFilePath = "D:\\video\\ts\\25-16_940.ts"; + + String outputFilePath = "D:\\video\\ts\\t2.jpg"; + + List command = new ArrayList(); + command.add(ffmpegExePath); + command.add("-i"); + command.add(inputFilePath); + command.add("-f"); + command.add("image2"); + command.add("-ss"); + command.add("1"); + command.add("-t"); + command.add("0.001"); + command.add("-s"); + command.add("320*240"); + command.add(outputFilePath); + ProcessBuilder builder = new ProcessBuilder(); + builder.command(command); + //正常信息和错误信息合并输出 + builder.redirectErrorStream(true); + try { + //开始执行命令 + Process process = builder.start(); + //如果你想获取到执行完后的信息,那么下面的代码也是需要的 + StringBuffer sbf = new StringBuffer(); + String line = null; + BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); + while ((line = br.readLine()) != null) { + sbf.append(line); + sbf.append(" "); + } + String resultInfo = sbf.toString(); + System.out.println(resultInfo); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + +} diff --git a/src/main/java/com/pancm/ffmpeg/FFmpegUtil.java b/src/main/java/com/pancm/ffmpeg/FFmpegUtil.java new file mode 100644 index 0000000..af038d2 --- /dev/null +++ b/src/main/java/com/pancm/ffmpeg/FFmpegUtil.java @@ -0,0 +1,69 @@ +package com.pancm.ffmpeg; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * @author pancm + * @Title: gb28181_platform + * @Description: FFmpeg相关的工具类 + * @Version:1.0.0 + * @Since:jdk1.8 + * @date 2021/4/15 + */ +public class FFmpegUtil { + + + /** + * 执行ffmpeg的项目命令 + * @param cmdList + * @throws IOException + */ + public static void exec(List cmdList) throws IOException { + BufferedReader br = null; + try { + ProcessBuilder builder = new ProcessBuilder(); + builder.command(cmdList); + //正常信息和错误信息合并输出 + builder.redirectErrorStream(true); + //开始执行命令 + Process process = builder.start(); + StringBuffer sbf = new StringBuffer(); + String line = null; + br = new BufferedReader(new InputStreamReader(process.getInputStream())); + while ((line = br.readLine()) != null) { + sbf.append(line); + sbf.append(" "); + } + String resultInfo = sbf.toString(); + System.out.println(resultInfo); + } finally { + if (br != null) { + br.close(); + } + } + } + + public static void main(String[] args) throws IOException { + String ffmpegExePath = "C:\\ffmpeg\\bin\\ffmpeg.exe"; + String inputFilePath = "D:\\video\\ts\\25-16_940.ts"; + String outputFilePath = "D:\\video\\ts\\t3.jpg"; + List command = new ArrayList(); + command.add(ffmpegExePath); + command.add("-i"); + command.add(inputFilePath); + command.add("-f"); + command.add("image2"); + command.add("-ss"); + command.add("1"); + command.add("-t"); + command.add("0.001"); + command.add("-s"); + command.add("640*480"); + command.add(outputFilePath); + exec(command); + } +} diff --git a/src/main/java/com/pancm/ffmpeg/package-info.java b/src/main/java/com/pancm/ffmpeg/package-info.java new file mode 100644 index 0000000..c181f44 --- /dev/null +++ b/src/main/java/com/pancm/ffmpeg/package-info.java @@ -0,0 +1,9 @@ +/** + * @Title: pancm_project + * @Description: ffmpeg的工具类 + * @Version:1.0.0 + * @Since:jdk1.8 + * @author pancm + * @date 2021/1/26 + */ +package com.pancm.ffmpeg; \ No newline at end of file