2009年9月19日 星期六

ffmpeg batch converter written in Java!!

(東抄西抄一堆Java IO samples來的,寫得很亂,但跑起來還不錯!想寫給Windows users用,但目前是在Unix環境測試,算是0.01版吧)

import java.io.*;
public class jffmpeg {

public static void main(String args[]) {
System.out.println("原始檔案請放到\"D:\\transcode\"資料夾");
System.out.println("MPEG2將轉檔於\"D:\\transcode\\output\"資料夾");
System.out.println("注意檔案名稱不要留空白!!");
try{
System.out.println("請按Enter繼續;Ctrl-C結束");
System.in.read();
} catch(IOException io)
{
System.out.println("ERROR" + io);
}

File outDir = new File("/work/java/output"); //指定要輸出的目錄
File myDir = new File("/work/java/mpg"); //指定要列出的目錄
if(!outDir.exists()){
System.out.println("\""+outDir+"\"不存在,請建立\""+outDir+"\"資料夾!!");
}else if (!myDir.exists()){
System.out.println("\""+myDir+"\"不存在,請建立\""+myDir+"\"資料夾!!");
}else{
/**
* 刪除目標資料夾下的所有檔案
*/
File[] dellist = outDir.listFiles();
for (int di = 0; di < dellist.length; di++) {
if (dellist[di].isFile()) {
dellist[di].delete();
}
}
try{
String[] list = myDir.list(); //取得目錄中的檔案列表
for(int i=0;i < list.length;i++){
try {
String line;
// String[] cmd = {"mencoder","test.mpg","-ovc","copy","-oac","copy","-o","output.mpg"};
// String[] cmd = {"ffmpeg"};
String[] cmd = {"ffmpeg","-i",myDir+"/"+list[i],"-target","ntsc-dvd",outDir+"/"+list[i]+".mpg"};
System.out.println("開始"+"\""+list[i]+"\""+"的MPEG2編碼...");
Process p = Runtime.getRuntime().exec(cmd);
/* Process p = Runtime.getRuntime().exec
(System.getenv("windir") +"\\system32\\"+"tree.com /A");*/
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
System.out.println("完成"+"\""+list[i]+"\""+"的MPEG2編碼!!");
}
catch (Exception err) {
err.printStackTrace();
}
}
}catch(Exception e){
System.err.println(e);
}
}
}
}

沒有留言:

張貼留言