最完整获取视频时长以及将MultipartFile转化成File的工具类(原创)

需要引入jar包 下载地址

http://www.sauronsoftware.it/projects/jave/download.php

maven首先要引入

  <groupId>jave

  <artifactId>jave

  <version>1.0.2

  <scope>system

  <systemPath>${basedir}/lib/jave-1.0.2.jar

</dependency>

//这是一个外部的包,在根目录下创建lib文件夹,将包放进去

import it.sauronsoftware.jave.Encoder;

import it.sauronsoftware.jave.MultimediaInfo;

import org.apache.tomcat.util.http.fileupload.disk.DiskFileItem;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;

import java.io.IOException;

/**

* 用于处理视频时间/大小

*/

public class VideoUtil {

/**

* 获取视频时长(时分秒)

    * @param file

    * @return

    */

    public static StringReadVideoTime(MultipartFile file) {

Encoder encoder =new Encoder();

        String length ="";

        try {

CommonsMultipartFile cf= (CommonsMultipartFile)file;

            DiskFileItem fi = (DiskFileItem)cf.getFileItem();

            File source = fi.getStoreLocation();

            MultimediaInfo m = encoder.getInfo(source);

            long ls = m.getDuration()/1000;

            //时

            int hour = (int) ls / (60 *60 *1000);

            //分

            int minute = (int) (ls % (60 *60 *1000)) /60000;

            //秒

            int second = (int) ((ls % (60 *60 *1000)) %60000) /1000;

            //毫秒

//          int minsecond = (int)(((ls % (60 * 60 * 1000)) % 60000) % 1000);

            length = hour+":"+minute+":"+second+":";

        }catch (Exception e) {

e.printStackTrace();

        }

return length;

    }

/**

* 获取视频时长(毫秒)

    * @param file

    * @return

    */

    public static StringReadVideoTimeMs(MultipartFile file) {

Encoder encoder =new Encoder();

        String length ="";

        try {

// 获取文件类型

            //这里解释下,因为前台传这个文件给起了别名,如果你的前台传值正常传直接用getOriginalFilename()

            String fileName = file.getContentType();

            //同理 正常情况下使用substring(fileName.lastIndexOf("."))即可

             // 获取文件后缀

            String pref = fileName.indexOf("/") != -1 ? fileName.substring(fileName.lastIndexOf("/") +1, fileName.length()) :null;

            String prefix ="." + pref;

            // 用uuid作为文件名,防止生成的临时文件重复

            final File excelFile = File.createTempFile(UUIDUtil.getUUID(), prefix);

            // MultipartFile to File

            file.transferTo(excelFile);

            MultimediaInfo m = encoder.getInfo(excelFile);

            long ls = m.getDuration()/1000;

            length = String.valueOf(ls);

            //程序结束时,删除临时文件

            VideoUtil.deleteFile(excelFile);

        }catch (Exception e) {

e.printStackTrace();

        }

return length;

    }

/**

* 删除临时文件

    * @param files

    */

    private static void deleteFile(File... files) {

for (File file : files) {

if (file.exists()) {

file.delete();

            }

}

}

}

如有侵权,联系我

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,726评论 0 3
  • 超高速音视频编码器用法: ffmpeg [options] [[infile options] -i infile...
    吉凶以情迁阅读 4,663评论 0 4
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,347评论 0 9
  • 秋天,多姿多彩,多情多思。 成熟与衰败,盛开与凋零,同时呈现的两极,给这一季点缀了些许莫测,些许神秘。 收获的喜悦...
    LittleSirius阅读 317评论 0 2