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

 

 

 

转载于:https://my.oschina.net/648885471/blog/3064677

你可能感兴趣的:(java,操作系统)