求javaWeb大神,关于ffmpeg视频转换格式的问题~
时间: 2014-12-05来源:开源中国
前景提要
HDC调试需求开发(15万预算),能者速来!>>> 最近做的项目需要视频转换器ffmpeg,代码和程序我都有,路径也对,可是奇怪的是我在纯javaProject的环境下运行代码,可以很顺利的将a.avi转换成a.flv,但是我把代码复制到我的web Project中时,程序不异常,运行各方面都正常,路径更是对的没话说,可是就是转换不成flv文件,凌乱了,是不是在web中还需要什么东西?为什么会这么奇怪?这是代码: package org.whhn.utils; import java.io.File; import java.util.ArrayList; import java.util.Calendar; import java.util.List; public class ConvertVideo { public static boolean process(String PATH,String relname,String shortname) { int type = checkContentType(PATH); boolean status = false; if (type == 0) { System.out.println("直接将文件转为flv文件"); status = processFLV(PATH,relname,shortname);// 直接将文件转为flv文件 } else if (type == 1) { //String avifilepath = processAVI(type); //if (avifilepath == null) return false;// avi文件没有得到 // status = processFLV(avifilepath);// 将avi转为flv } return status; } private static int checkContentType(String PATH) { 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 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 ArrayList<String>(); commend.add("d:\\ffmpeg\\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("d:\\ffmpeg\\output\\b.avi"); try { ProcessBuilder builder = new ProcessBuilder(); builder.command(commend); builder.start(); return "d:\\ffmpeg\\output\\b.avi"; } catch (Exception e) { e.printStackTrace(); return null; } } */ // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) private static boolean processFLV(String oldfilepath,String relname,String shortname) { System.out.println(oldfilepath); if (!checkfile(oldfilepath)) { System.out.println(oldfilepath + " is not file"); return false; } // 文件命名 Calendar c = Calendar.getInstance(); String savename = String.valueOf(c.getTimeInMillis())+ Math.round(Math.random() * 100000); List<String> commend = new ArrayList<String>(); commend.add("d:\\apache-tomcat-7.0.42\\webapps\\Whhn\\CuPlayer\\ffmpeg"); commend.add("-i"); commend.add(oldfilepath); 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("600x500"); commend.add("d:\\apache-tomcat-7.0.42\\webapps\\Whhn\