代码
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>