import java.io.File; 
import java.util.List; public class ConvertVideo { private final static String PATH = "f:\\qqqq.avi";  public static void main(String[] args) { 
if (!checkfile(PATH)) { 
System.out.println(PATH + " 没有找到文件"); 
return; 

if (process()) { 
System.out.println("ok"); 

}  private static boolean process() { 
int type = checkContentType(); 
boolean status = false; 
if (type == 0) { 
System.out.println("执行0"); 
status = processFLV(PATH);// 直接将文件转为flv文件 
System.out.println("000000");

else if (type == 1) { 
System.out.println("执行1"); 
String avifilepath = processAVI(type); 
System.out.println("111111");
if (avifilepath == null) { 
return false;// avi文件没有得到 
} else { 
System.out.println("执行转换flv"); 
status = processFLV(avifilepath);// 将avi转为flv 
System.out.println("222222");


return status; 
}  private static int checkContentType() { 
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; 


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 boolean checkfile(String path) { 
File file = new File(path); 
if (!file.isFile()) { 
return false; 

return true; 
}  // 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式. 
private static String processAVI(int type) { 
List <String> commend = new java.util.ArrayList <String>(); 
commend.add("f:\\flv\\mencoder.exe"); 
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 = new ProcessBuilder(); 
builder.command(commend); 
builder.start(); 
return "f:\\a.avi"; 
} catch (Exception e) { 
e.printStackTrace(); 
return null; 

}  // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 
private static boolean processFLV(String oldfilepath) { 

if (!checkfile(PATH)) { 
System.out.println(oldfilepath + " 没有找到文件"); 
return false; 


List <String> commend = new java.util.ArrayList <String>(); 
commend.add("f:\\flv\\ffmpeg.exe"); 
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("500"); 
commend.add("-r"); 
commend.add("15"); 
commend.add("-y"); 
commend.add("f:\\a8.flv");  try { 
ProcessBuilder builder = new ProcessBuilder(); 
builder.command(commend); 
builder.start(); 
return true; 
} catch (Exception e) { 
e.printStackTrace(); 
return false; 

} } 
转码一个14M的文件,最后变成了70几M,大家帮我看看是什么问题,谢谢了,

解决方案 »

  1.   

    我也是的,我用的是PHP ,不过mpg的转换后变小了。
    其它的都变很大的了。
    另外土豆的他们是怎么存储那些视频文件的啊?可以问下吗?我的QQ 296946867
      

  2.   

    commend.add("300*240"); // 控制转换后的 flv 视频大小
      

  3.   

    List commend = new ArrayList();
    commend.add(stringFfmpeg + "ffmpeg");
    commend.add("-i");
    commend.add(resourcePath);
    commend.add("-ab");
    commend.add("56");
    commend.add("-ar");
    commend.add("22050");
    commend.add("-qscale");
    commend.add("8");
    commend.add("-r");
    commend.add("15");
    commend.add("-s");
    commend.add("300*240");
    commend.add(stringFLV[0] + ".flv");