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