copy即用:MultipartFile 音頻視頻獲取時長(時分秒)

三個步驟:

  1. 本地生成file文件
  2. MultipartFile轉爲file,獲取時長(毫秒),換算毫秒爲時分秒
  3. 刪除本地的file文件

 導入maven,該jar包可能會自動下載失敗,需手動下載的,請移步:

<dependency>
    <groupId>it.sauronsoftware</groupId>
    <artifactId>jave</artifactId>
    <version>1.0.2</version>
</dependency>

 注意:下載後,需手動將zip包解壓,放至本地maven倉庫,下圖爲本機路徑(若無配置,跟我一致):

 VideoUtil

import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

/**
 * @Author: Hanweihu
 * @Description:
 * @Date: Created in 8:33 2019/7/30
 */
@Slf4j
@Component
public class VideoUtil {

    /**
     * @Description: 獲取視頻時長(時分秒)
     * @author: Hanweihu
     * @date: 2019/7/30 8:35
     * @params: [file]
     * @return: java.lang.String
     */
    public String ReadVideoTimeMs(MultipartFile file) {
        Encoder encoder = new Encoder();
        long ms = 0;
        try {
            // 獲取文件類型
            String fileName = file.getContentType();
            // 獲取文件後綴
            String pref = fileName.indexOf("/") != -1 ? fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()) : null;
            String prefix = "." + pref;
            // 用uuid作爲文件名,防止生成的臨時文件重複
            final File excelFile = File.createTempFile(UUID.randomUUID().toString().replace("-", ""), prefix);
            // MultipartFile to File
            file.transferTo(excelFile);
            MultimediaInfo m = encoder.getInfo(excelFile);
            ms = m.getDuration();
            //程序結束時,刪除臨時文件
            VideoUtil.deleteFile(excelFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        int ss = 1000;
        int mi = ss * 60;
        int hh = mi * 60;
        int dd = hh * 24;

        long day = ms / dd;
        long hour = (ms - day * dd) / hh;
        long minute = (ms - day * dd - hour * hh) / mi;
        long second = (ms - day * dd - hour * hh - minute * mi) / ss;

        String strHour = hour < 10 ? "0" + hour : "" + hour;//小時
        String strMinute = minute < 10 ? "0" + minute : "" + minute;//分鐘
        String strSecond = second < 10 ? "0" + second : "" + second;//秒
        if (strHour.equals("00")) {
            return strMinute + ":" + strSecond;
        } else {
            return strHour + ":" + strMinute + ":" + strSecond;
        }
    }

    /**
     * @Description: 刪除文件
     * @author: Hanweihu
     * @date: 2019/7/30 8:35
     * @params: [files]
     * @return: void
     */
    private static void deleteFile(File... files) {
        for (File file : files) {
            if (file.exists()) {
                file.delete();
            }
        }
    }
}

調用 ReadVideoTimeMs 方法即可:

String duration = videoUtil.ReadVideoTimeMs(multipartFile);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章