jave当前的版本太旧了 很久没有更新了,而且关键的是maven库中无法使用,偶然间看到github上出现了jave2.0,https://github.com/a-schild/jave2
我本地使用的2.4.6
ws.schild
jave-all-deps
2.4.6
官网已经更新到了2.5.0
然后就可以使用了吗?可以是可以 但是所有依赖下载完毕 会发现这玩意太大了吧,好几百M呢!!!
看了官网的提示,可以使用适合当前系统的依赖:
第一步:加入适合当前环境的依赖
dev
dev
jave-native-win64
true
test
test
jave-native-linux64
false
pro
pro
jave-native-linux64
false
ws.schild
jave-core
2.4.6
ws.schild
jave-native-osx64
2.4.6
ws.schild
${jave}
2.4.6
解释一下这个${jave}变量:
1.本地开发时是window64:jave-native-win64,本地开发是MACOS:jave-native-osx64
2.服务器linux : jave-nativebin-linux64
第二步:获取文件各种属性(这里我只是获取音频、视频的时长而已):
@Component
public class AudioVideoUtil {
private static final Logger logger = LoggerFactory.getLogger(AudioVideoUtil.class);
@Value("${文件临时目录}")
private String locationTemp;
public long getDurationSecond(MultipartFile multipartFile) {
//防止文件重复 类似于c:/app/tomcat/tmp/201905081111111_Go.mp3
StringBuffer stringBuffer = new StringBuffer(locationTemp)
.append(System.currentTimeMillis())
.append("_").append(multipartFile.getOriginalFilename());
String localPath = stringBuffer.toString();
File file = new File(localPath);
try {
//上传的文件放置到临时目录下
if (!file.getParentFile().exists()) {
file.mkdirs();
}
//copy文件
multipartFile.transferTo(file);
//解析文件
MultimediaObject object = new MultimediaObject(file);
MultimediaInfo multimediaInfo = object.getInfo();
long duration = multimediaInfo.getDuration();
logger.debug("文件:{},时长ms:", localPath, duration);
return duration / 1000 ;
} catch (Exception e) {
e.printStackTrace();
} finally {
//别忘了删除文件 以免浪费空间
logger.info("文件:{} ,是否已删除?file.delete()={}", localPath, file.delete());
}
return 0;
}
}
另:更多的文件属性方法 参考官方文档:https://github.com/a-schild/jave2