<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{
File tempFile = FileUploadUtils.MultipartFileToFile(file);
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;
}
/**
* 功能描述 :MultipartFile转file对象
* @author Mr.LiuYong
* @date 2019/5/10 18:30
* @param
* @return
*/
public static File MultipartFileToFile(MultipartFile multiFile) {
// 获取文件名
String fileName = multiFile.getOriginalFilename();
// 获取文件后缀
String prefix = fileName.substring(fileName.lastIndexOf("."));
// 用当前时间作为文件名,防止生成的临时文件重复
try {
File file = File.createTempFile(System.currentTimeMillis() + "", prefix);
multiFile.transferTo(file);
return file;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
评论 (0)