package org.fouram.core.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 视频格式转换 ffmpeg
 * @author Liup
 */
public class FfmpegUtil {

	/**
	 * ffmepg转换视频文件
	 * 
	 * @param inputFile
	 * @parm mp4File
	 * @return
	 */
	public static boolean toMP4(String inputFile, String mp4File) {
		if (!new File(inputFile).exists()) {
			return false;
		}
		if (new File(mp4File).exists()) {
			return true;
		}
		List<String> commend = new ArrayList<String>();
		commend.add("ffmpeg");
		commend.add("-threads");
		commend.add("4");
		commend.add("-i");
		commend.add(inputFile);
		commend.add("-strict");
		commend.add("-2");
		commend.add("-c:a");
		commend.add("aac");
		commend.add("-b:a");
		commend.add("64k");
		commend.add("-vcodec");
		commend.add("copy");
		commend.add("-vprofile");
		commend.add("high");
		commend.add("-b:v");
		commend.add("400k");
		commend.add("-maxrate");
		commend.add("400k");
		commend.add("-bufsize");
		commend.add("1000k");
		commend.add(mp4File);
		try {
			ProcessBuilder builder = new ProcessBuilder();
			builder.command(commend);
			Process p = builder.start();
			p.waitFor();
			if (new File(mp4File).exists()) {
				return true;
			}else{
				return false;
			}
		} catch (Exception e) {
			return false;
		}
	}
	
	/**
	 * ffmepg转换视频文件
	 * 
	 * @param inputFile
	 * @parm flvFile
	 * @return
	 */
	public static boolean toFLV(String inputFile, String flvFile) {
		if (!new File(inputFile).exists()) {
			return false;
		}
		if (new File(flvFile).exists()) {
			return true;
		}
		List<String> commend = new ArrayList<String>();
		commend.add("ffmpeg");
		commend.add("-threads");
		commend.add("4");
		commend.add("-i");
		commend.add(inputFile);
		commend.add("-ab");
		commend.add("56");
		commend.add("-ar");
		commend.add("44100");
		commend.add("-b");
		commend.add("1M");
		commend.add("-r");
		commend.add("15");
		commend.add("-f");
		commend.add("flv");
		commend.add(flvFile);
		try {
			ProcessBuilder builder = new ProcessBuilder();
			builder.command(commend);
			Process p = builder.start();
			p.waitFor();
			if (new File(flvFile).exists()) {
				return true;
			}else{
				return false;
			}
		} catch (Exception e) {
			return false;
		}
	}
}
