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视频时长、大小的资料请关注毛票票其它相关文章!