求javaWeb大神,关于ffmpeg视频转换格式的问题~

上帝爱众生 发布于 2014/12/05 11:44
阅读 830
收藏 0
最近做的项目需要视频转换器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\\upload\\video\\"+shortname+".flv");  
  
        try {  
            Runtime runtime = Runtime.getRuntime();  
            Process proce = null;  
            String cmd = "";  
            String cut = "     D:\\apache-tomcat-7.0.42\\webapps\\Whhn\\CuPlayer\\ffmpeg.exe   -i   "  
                    + oldfilepath  
                    + "   -y   -f   image2   -ss   8   -t   0.001   -s   600x500   d:\\apache-tomcat-7.0.42\\webapps\\Whhn\\upload\\video\\"  
                    + ""+shortname+".jpg";  
            String cutCmd = cmd + cut;  
            proce = runtime.exec(cutCmd);  
            ProcessBuilder builder = new ProcessBuilder(commend);  
            builder.command(commend);  
            builder.start();  
  
            return true;  
        } catch (Exception e) {  
            e.printStackTrace();  
            return false;  
        }  
    }  
}  
加载中
0
s
skipfree

请问你解决了没,能否发一份

0
k
kiolss2

常用几款好用的视频格式转换器软件
视频格式转换器 http://www.skycn.com/soft/appid/15894.html 
视频格式转换器 http://www.onlinedown.net/soft/99509.htm 
视频格式转换器 http://www.skycn.net/soft/appid/15894.html

返回顶部
顶部