代码
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import lombok.extern.slf4j.Slf4j;
import ws.schild.jave.Encoder;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.AudioAttributes;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.process.ProcessWrapper;
import ws.schild.jave.process.ffmpeg.DefaultFFMPEGLocator;
import java.io.File;
import java.io.InputStream;
@Slf4j
public class FfmpegUtil {
public static void mp4ToMp3(String src, String dest) {
FileUtil.writeUtf8String("", dest);
File fileMp4 = new File(src);
File fileMp3 = new File(dest);
AudioAttributes audio = new AudioAttributes();
EncodingAttributes attrs = new EncodingAttributes();
attrs.setOutputFormat("mp3");
attrs.setAudioAttributes(audio);
Encoder encoder = new Encoder();
MultimediaObject mediaObject = new MultimediaObject(fileMp4);
try {
encoder.encode(mediaObject, fileMp3, attrs);
} catch (Exception e) {
log.error(ExceptionUtil.stacktraceToString(e));
}
}
public static void firstFrame(String src, String dest) {
FileUtil.writeUtf8String("", dest);
ProcessWrapper ffmpeg = new DefaultFFMPEGLocator().createExecutor();
try {
ffmpeg.addArgument("-i");
ffmpeg.addArgument(src);
ffmpeg.addArgument("-y");
ffmpeg.addArgument("-ss");
ffmpeg.addArgument("1");
ffmpeg.addArgument("-vframes");
ffmpeg.addArgument("1");
ffmpeg.addArgument(dest);
ffmpeg.execute();
InputStream errorStream = ffmpeg.getErrorStream();
String read = IoUtil.read(errorStream, CharsetUtil.UTF_8);
System.out.println(read);
} catch (Exception e) {
log.error(ExceptionUtil.stacktraceToString(e));
} finally {
ffmpeg.close();
}
}
}
依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.15</version>
</dependency>
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-all-deps</artifactId>
<version>3.2.0</version>
</dependency>