importjava.io.File;importjava.util.List;public classConvertVideo {private final static String PATH = "c://test//a.mpg";public static voidmain(String[] args) {if(!checkfile(PATH)){
System.out.println(PATH+" is not file");return;
}if(process()) {
System.out.println("ok");
}
}private static booleanprocess() {int type =checkContentType();boolean status = false;if (type==0) {
status= processFLV(PATH);//直接将文件转为flv文件
} else if (type==1) {
String avifilepath=processAVI(type);if (avifilepath == null)return false;//avi文件没有得到
status = processFLV(avifilepath);//将avi转为flv
}returnstatus;
}private static intcheckContentType() {
String type= PATH.substring(PATH.lastIndexOf(".") + 1,
PATH.length()).toLowerCase();//ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
if (type.equals("avi")) {return 0;
}else if (type.equals("mpg")) {return 0;
}else if (type.equals("wmv")) {return 0;
}else if (type.equals("3gp")) {return 0;
}else if (type.equals("mov")) {return 0;
}else if (type.equals("mp4")) {return 0;
}else if (type.equals("asf")) {return 0;
}else if (type.equals("asx")) {return 0;
}else if (type.equals("flv")) {return 0;
}//对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
else if (type.equals("wmv9")) {return 1;
}else if (type.equals("rm")) {return 1;
}else if (type.equals("rmvb")) {return 1;
}return 9;
}private static booleancheckfile(String path){
File file=newFile(path);if(!file.isFile()){return false;
}return true;
}//对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
private static String processAVI(inttype) {
List commend=new java.util.ArrayList();
commend.add("e://mencoder");
commend.add(PATH);
commend.add("-oac");
commend.add("lavc");
commend.add("-lavcopts");
commend.add("acodec=mp3:abitrate=64");
commend.add("-ovc");
commend.add("xvid");
commend.add("-xvidencopts");
commend.add("bitrate=600");
commend.add("-of");
commend.add("avi");
commend.add("-o");
commend.add("c://home//a.avi");try{
ProcessBuilder builder= newProcessBuilder();
builder.command(commend);
builder.start();return "c://home//a.avi";
}catch(Exception e){
e.printStackTrace();return null;
}
}//ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static booleanprocessFLV(String oldfilepath) {if(!checkfile(PATH)){
System.out.println(oldfilepath+" is not file");return false;
}
List commend=new java.util.ArrayList();
commend.add("e://ffmpeg");
commend.add("-i");
commend.add(oldfilepath);
commend.add("-ab");
commend.add("64");
commend.add("-acodec");
commend.add("mp3");
commend.add("-ac");
commend.add("2");
commend.add("-ar");
commend.add("22050");
commend.add("-b");
commend.add("230");
commend.add("-r");
commend.add("24");
commend.add("-y");
commend.add("c://home//a.flv");try{
ProcessBuilder builder= newProcessBuilder();
builder.command(commend);
builder.start();return true;
}catch(Exception e) {
e.printStackTrace();return false;
}
}
}