Java获取视频时长、大小的示例
项目中有这样一个需求,网页上上传了一个视频,需要获取此视频的时长、大小,把这两个数据返回给前台在页面显示。后台使用的是springboot框架,项目部署在linux上面。下面是核心代码:
1、pom文件中需要导入的jar包依赖
(分为两部分:核心包、ffmpeg包两部分,ffmpeg包又分为Windows环境以及Linux环境,同时又区分32位系统以及64位系统。针对于不同的运行环境要导入不同的包,这一点对于开发、测试环境为Window而生产环境为Linux的情况,尤其要注意需要导入所有的包,使其在两种环境下都能够使用)
ws.schild jave-all-deps 2.6.0 ws.schild jave-core 2.4.5 ws.schild jave-native-win32 2.4.5 ws.schild jave-native-win64 2.4.5 ws.schild jave-native-linux32 2.4.6 ws.schild jave-native-linux64 2.4.6
2、controller层代码
packagecom.aaa.bbb.controller; importio.swagger.annotations.Api; importlombok.extern.slf4j.Slf4j; importorg.apache.commons.io.FileUtils; importorg.springframework.util.ResourceUtils; importorg.springframework.web.bind.annotation.PostMapping; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.RestController; importws.schild.jave.MultimediaInfo; importws.schild.jave.MultimediaObject; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.math.BigDecimal; importjava.math.RoundingMode; importjava.nio.channels.FileChannel; @Slf4j @RestController @RequestMapping("/readVideo") @Api(tags="获取视频时长、大小相关信息的接口") publicclassReadVideoController{ /** *获取视频时长 * *@paramfileUrl *@return */ @PostMapping("/videoLengthAndSize") publicstaticStringgetLengthAndSize(@RequestParamStringfileUrl)throwsFileNotFoundException{ ReadVideoControllerr=newReadVideoController(); Stringpath=ResourceUtils.getURL("classpath:").getPath()+"static"; System.out.println("666666666666666666666666666666【"+path+"】666666666666666666666666666666】"); fileUrl=path+fileUrl; StringvideoLength=r.ReadVideoTime(fileUrl);//视频时长 System.out.println("===========================视频时长:"+videoLength+"==========================="); returnvideoLength; } /** *视频时长 * *@paramFileUrl *@return */ publicstaticStringReadVideoTime(StringFileUrl){ Filesource=newFile(FileUrl); Stringlength=""; try{ MultimediaObjectinstance=newMultimediaObject(source); MultimediaInforesult=instance.getInfo(); longls=result.getDuration()/1000; Integerhour=(int)(ls/3600); Integerminute=(int)(ls%3600)/60; Integersecond=(int)(ls-hour*3600-minute*60); Stringhr=hour.toString(); Stringmi=minute.toString(); Stringse=second.toString(); if(hr.length()<2){ hr="0"+hr; } if(mi.length()<2){ mi="0"+mi; } if(se.length()<2){ se="0"+se; } length=hr+":"+mi+":"+se; }catch(Exceptione){ e.printStackTrace(); } returnlength; } /** *视频大小 * *@paramsource *@return */ @SuppressWarnings({"resource"}) publicstaticStringReadVideoSize(Filesource){ FileChannelfc=null; Stringsize=""; try{ FileInputStreamfis=newFileInputStream(source); fc=fis.getChannel(); BigDecimalfileSize=newBigDecimal(fc.size()); size=fileSize.divide(newBigDecimal(1024*1024),2,RoundingMode.HALF_UP)+"MB"; }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(null!=fc){ try{ fc.close(); }catch(IOExceptione){ e.printStackTrace(); } } } returnsize; } }
以上就是Java获取视频时长、大小的示例的详细内容,更多关于Java视频时长、大小的资料请关注毛票票其它相关文章!