最近有看一些专业相关视频,想统计一下视频的总时长,查找资料找到开源工具
JAVE可以实现这个功能
JAVE - A Java Audio/Video Encoder (based on FFMPEG)
jar包及源码下载链接
获取一个目录下所有视频的总时长,代码如下:
package it.road.com;
import java.io.File;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.InputFormatException;
import it.sauronsoftware.jave.MultimediaInfo;
public class GetVideoTime {
void GetTime(String path){
//Get File paths
File[] files = new File(path).listFiles();
//Print the files name in the path
for(int i = 0; i < files.length; i++){
String str = files[i].getName();
System.out.println(str);
}
//Create Encoder and MultimediaInfo Object
Encoder encoder = new Encoder();
MultimediaInfo multinfo;
long totalTime = 0L;
long duration = 0L;
for(int i = 0; i < files.length; i++){
try {
multinfo = encoder.getInfo(files[i]);
duration = multinfo.getDuration();
totalTime += duration;
//System.out.print(multinfo.getDuration());
//System.out.print(" ");
} catch (InputFormatException e) {
e.printStackTrace();
} catch (EncoderException e) {
e.printStackTrace();
}
}
System.out.print(totalTime/(3600*1000) + ":"
+ totalTime%(3600*1000)/(60*1000)+ ":"
+ totalTime%(3600*1000)%(60*1000)/1000);
}
public static void main(String args[]) {
GetVideoTime gettime = new GetVideoTime();
//gt.GetTime("E:\\SSH-JavaEE\\workspace\\SSHDemo\\src\\com\\hotelMana\\action\\user");
gettime.GetTime("E:\\视频\\day15\\day15_avi");
}
}