<dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>2.5.1</version></dependency>
public AjaxResult uploadFileVideo(MultipartFile file) throws Exception{try{// 上传文件路径String filePath = Global.getUploadPath();// 上传并返回新文件名称String fileName = FileUploadUtils.upload(filePath, file , MimeTypeUtils.MEDIA_EXTENSION);String url = serverConfig.getUrl() + fileName;String actualFileName = fileName.substring(fileName.indexOf("/",10));String actualUrl = filePath + actualFileName;File temp = new File(actualUrl);AjaxResult ajax = AjaxResult.success();try {double duration = getVedioTime(temp);Long limit = 10L;if(duration <=0 ){temp.delete();return AjaxResult.error("视频损坏");}else if(duration > limit){temp.delete();return AjaxResult.error("视频时长不能超过"+limit+"秒");}ajax.put("duration", duration);} catch (Exception e){e.printStackTrace();temp.delete();return AjaxResult.error("视频解析失败");}ajax.put("fileName", fileName);ajax.put("url", url);ajax.put("judge", judgeVerticalAndHorizontal(file));return ajax;}catch (Exception e){return AjaxResult.error(e.getMessage());}}
/*** @author Uncle* @Description TODO 判断视频纵向还是横向* @Date 2020/07/27 11:50* @param* @return 1 横 0 竖*/public int judgeVerticalAndHorizontal(MultipartFile file){float v = 0F;try{String fileName = file.getOriginalFilename();String prefix = fileName.substring(fileName.lastIndexOf("."));File tempFile = File.createTempFile(file.getOriginalFilename(), prefix);MultimediaObject instance = new MultimediaObject(tempFile);ws.schild.jave.MultimediaInfo m = instance.getInfo();//> 1 说明是横的。< 1说明是竖着的v = ((float) m.getVideo().getSize().getWidth()) / ((float) m.getVideo().getSize().getHeight());}catch (Exception e){e.printStackTrace();}return v>1?1:0;}
/** 获取视频时长:秒** @param file* @return*/public static Long getVedioTime(File file) {try {MultimediaObject instance = new MultimediaObject(file);ws.schild.jave.MultimediaInfo result = instance.getInfo();long ls = result.getDuration() / 1000;return ls;} catch (Exception e) {e.printStackTrace();}return 0L;}