当前位置: 代码迷 >> 综合 >> 获取视频时长,判断视频横竖拍摄
  详细解决方案

获取视频时长,判断视频横竖拍摄

热度:19   发布时间:2024-02-01 15:38:08.0
        <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;}

 

  相关解决方案