导入JavaCV依赖
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.3</version>
</dependency>
创建转码工具包
public class JavaCvUtil {
public static String convert(File file) {
FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(file.getAbsolutePath());
String fileName = null;
String fileFullPathName = null;
Frame captured_frame = null;
FFmpegFrameRecorder recorder = null;
try {
frameGrabber.start();
//获取转码后的视频名称
fileName = file.getName().replace(file.getName().substring(file.getName().lastIndexOf(".")),".mp4");
//更换转码后视频存储位置
String name = "E:\\Test\\"+file.getName();
fileFullPathName = name.replace(file.getAbsolutePath().substring(file.getAbsolutePath().lastIndexOf(".")), ".mp4");
//如果想把转码后的视频还是保存到原文件目录下
//fileFullPathName = file.getAbsolutePath().replace(file.getAbsolutePath().substring(file.getAbsolutePath().lastIndexOf(".")), ".mp4");
recorder = new FFmpegFrameRecorder(fileFullPathName, frameGrabber.getImageWidth(), frameGrabber.getImageHeight(), frameGrabber.getAudioChannels());
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setFormat("mp4");
recorder.setFrameRate(frameGrabber.getFrameRate());
recorder.setVideoBitrate(frameGrabber.getVideoBitrate());
recorder.setAudioBitrate(192000);
recorder.setAudioOptions(frameGrabber.getAudioOptions());
recorder.setAudioQuality(0);
recorder.setSampleRate(44100);
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
recorder.start();
while (true) {
try {
captured_frame = frameGrabber.grabFrame();
if (captured_frame == null) {
System.out.println("!!! Failed cvQueryFrame");
break;
}
recorder.record(captured_frame);
} catch (Exception e) {
e.printStackTrace();
}
}
recorder.stop();
recorder.release();
frameGrabber.stop();
frameGrabber.release();
recorder.close();
frameGrabber.close();
} catch (Exception e) {
e.printStackTrace();
}
//返回转码后视频文件名称
return fileName;
//返回转码后视频全路径
//return fileFullPathName;
}
}
测试
public class JavaCvTest{
public static void main(String[] args) throws java.lang.Exception {
//原文件全路径
String filePath = "E:/JavaCv/1.mp4";
String convert = JavaCvUtil.convert(new File(filePath));
System.out.println(convert);
}
}
原视频
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1c22946fa3544d68bc7d4b24d366bc0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAVGVudG9uU3R1ZHk=,size_17,color_FFFFFF,t_70,g_se,x_16