*需要配置ffmpeg文件!!!
常用视频格式都支持,只是转换效率不高!
import java.util.ArrayList;
import java.util.List;
import com.crm.util.common.PropertyUtil;
public class ConvertVideo {
//输出视频地址
private static String inputPath = "";
//输出视频地址(本地配置)
private static String outputPath = PropertyUtil.VIDEO_STORAGE_LOCATION;
//所在位置(本地配置)
private static String ffmpegPath = PropertyUtil.VIDEO_FFMPEG_STORAGE_LOCATION;
public static String process(String path, String name) {
//转换后返回文件名
return processVedio(path,name);
}
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static String processVedio(String path, String name) {
List<String> command = new ArrayList<String>();
command.add(ffmpegPath + "ffmpeg");
command.add("-i");
command.add(path+"/"+name);//输入文件路径
command.add("-ab");
command.add("56");
command.add("-ar");
command.add("22050");
command.add("-qscale");
command.add("8");
command.add("-r");
command.add("15");
command.add("-s");
command.add("720x480"); //分辨率
name = name.substring(0, name.lastIndexOf(".")) + ".mp4";
path = path +"/"+ name ;
command.add(path); //输入文件路径
try {
Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();
new PrintStream(videoProcess.getErrorStream()).start();
new PrintStream(videoProcess.getInputStream()).start();
videoProcess.waitFor();
return name;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
class PrintStream extends Thread {
java.io.InputStream __is = null;
public PrintStream(java.io.InputStream is) {
__is = is;
}
public void run() {
try {
while (this != null) {
int _ch = __is.read();
if (_ch != -1)
System.out.print((char) _ch);
else
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}