package yctc.cp.converter; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; public class ConvertFlv { public static void main(String[] args) { ConvertFlv.convert("D:\\2.avi", "D:\\3.flv"); } public static boolean convert(String inputFile, String outputFile) { if (!checkfile(inputFile)) { System.out.println(inputFile + " is not file"); return false; } if (process(inputFile,outputFile)) { System.out.println("ok"); return true; } return false; } //检查文件是否存在 private static boolean checkfile(String path) { File file = new File(path); if (!file.isFile()) { return false; } return true; } private static boolean process(String inputFile,String outputFile) { int type = checkContentType( inputFile); boolean status = false; if (type == 0) { status = processFLV(inputFile,outputFile);// 直接将文件转为flv文件 } else if (type == 1) { String avifilepath = processAVI(type,inputFile); if (avifilepath == null) return false;// avi文件没有得到 status = processFLV(avifilepath,outputFile);// 将avi转为flv } return status; } /** * 检查视频类型 * @param inputFile * @return ffmpeg 能解析返回0,不能解析返回1 */ private static int checkContentType(String inputFile) { String type = inputFile.substring(inputFile.lastIndexOf(".") + 1, inputFile.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; } /** * ffmepg: 能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) * @param inputFile * @param outputFile * @return */ private static boolean processFLV(String inputFile,String outputFile) { if (!checkfile(inputFile)) { System.out.println(inputFile + " is not file"); return false; } List commend = new java.util.ArrayList(); //低精度 commend.add(""); commend.add("-i"); commend.add(inputFile); commend.add("-ab"); commend.add("128"); commend.add("-acodec"); commend.add("libmp3lame"); commend.add("-ac"); commend.add("1"); commend.add("-ar"); commend.add("22050"); commend.add("-qscale"); commend.add("4"); commend.add("-s"); commend.add("350x240"); commend.add("-r"); commend.add("29.97"); commend.add("-b"); commend.add("512"); commend.add("-y"); commend.add(outputFile); StringBuffer test=new StringBuffer(); for(int i=0;i commend = new java.util.ArrayList(); commend.add(""); commend.add(inputFile); commend.add("-oac"); commend.add("mp3lame"); commend.add("-lameopts"); commend.add("preset=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(""); StringBuffer test=new StringBuffer(); for(int i=0;i