简介
JAVE (Java Audio Video Encoder) 类库是一个 ffmpeg 项目的 Java 语言封装。开发人员可以使用 JAVE 在不同的格式间转换视频和音频。例如将 AVI 转成 MPEG 动画,等等 ffmpeg 中可以完成的在 JAVE 都有对应的方法。
使用
1、导包
<dependency>
<groupId>com.github.vip-zpf</groupId>
<artifactId>jave</artifactId>
<version>1.1.2</version>
</dependency>
2、实现
private void getVideoInfo(String filePath){
File source = new File(filePath);
Encoder encoder = new Encoder();
try(FileInputStream fis = new FileInputStream(source)){
MultimediaInfo mi = encoder.getInfo(source);
System.out.println(mi.getVideo()); //视频信息
System.out.println(mi.getAudio()); //音频信息
long duration = mi.getDuration();
int width = mi.getVideo().getSize().getWidth();
int height = mi.getVideo().getSize().getHeight();
String format = mi.getFormat();
int audioChannels = mi.getAudio().getChannels();
String audioDecoder = mi.getAudio().getDecoder();
int audioSamplingRate = mi.getAudio().getSamplingRate();
String videoDecoder = mi.getVideo().getDecoder();
float videoFrameRate = mi.getVideo().getFrameRate();
System.out.println("格式:" + format);
System.out.println("时长(秒):" + duration/1000);
System.out.println("尺寸:" + width + "×" + height);
System.out.println("音频编码:"+ audioDecoder);
System.out.println("音频轨道:" + audioChannels);
System.out.println("音频采样率:" + audioSamplingRate);
System.out.println("视频编码:" + videoDecoder);
System.out.println("视频帧率:" + videoFrameRate);
//获取视频大小
FileChannel fc= null;
fc= fis.getChannel();
BigDecimal fileSize = new BigDecimal(fc.size());
}catch (Exception e) {
e.printStackTrace();
}
}
存在问题
此工具在win下测试成功,但我的m1 pro的macos系统下无法使用,查看源码是有根据mac系统来copy ffmpeg-mac对应exe文件,不清楚是系统还是配置的问题。