展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

获取视频时长

jave
  • 导入本地仓库
mvn install:install-file -Dfile=jave-1.0.2.jar -DgroupId=joinery -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar
  • 工程pom中导入该依赖
  <dependency>
      <groupId>it.sauronsoftware</groupId>
      <artifactId>jave</artifactId>
      <version>1.0.2</version>
  </dependency>
  • 获取视频时长
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo;
import java.io.File;
 
@GetMapping(value = "/getVideoLength")
@ApiOperation(value="获取视频时长")
public Object getVideoLength(){
    File source = new File("C:\\Users\\ychen\\Videos\\test\\video1.flv");
    Encoder encoder = new Encoder();
    String length = "";
    try {
        MultimediaInfo m = encoder.getInfo(source);
        long ls = m.getDuration()/1000;
        int hour = (int) (ls/3600);
        int minute = (int) (ls%3600)/60;
        int second = (int) (ls-hour*3600-minute*60);
        length =hour+"时"+minute+"分"+second+"秒";
    } catch (Exception e) {
        e.printStackTrace();
        return "计算出错";
    }
    return new JSONResult(length);
}
  • 将MultipartFile转File
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
 
public class MultipartFileToFile {
 
    // MultipartFile 转 File
    public static File multipartFileToFile(MultipartFile file) throws Exception {
 
        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            file = null;
        } else {
            InputStream ins = null;
            ins = file.getInputStream();
            toFile = new File(file.getOriginalFilename());
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        return toFile;
    }
 
    //获取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    // 删除本地临时文件
    public static void delteTempFile(File file) {
        if (file != null) {
            File del = new File(file.toURI());
            del.delete();
        }
    }

}
  • 获取视频时长优化
    @GetMapping(value = "/getVideoLength")
    @ApiOperation(value="获取视频时长")
    public Object getVideoLength(@RequestParam("file") MultipartFile file) throws IOException {
        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            file = null;
        } else {
            InputStream ins = null;
            ins = file.getInputStream();
            toFile = new File(file.getOriginalFilename());
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        // 计算时长
        Encoder encoder = new Encoder();
        String length = "";
        try {
            MultimediaInfo m = encoder.getInfo(toFile);
            long ls = m.getDuration()/1000;
            int hour = (int) (ls/3600);
            int minute = (int) (ls%3600)/60;
            int second = (int) (ls-hour*3600-minute*60);
            length =hour+"时"+minute+"分"+second+"秒";
        } catch (Exception e) {
            e.printStackTrace();
            return "计算出错";
        }
        // 删除临时文件
        delteTempFile(toFile);
        return new JSONResult(length);
    }
posted @ 2022-05-12 11:02  DogLeftover  阅读(33)  评论(0编辑  收藏  举报