linux获取音频长度,JAVE2获取视频时长、音频时长

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