【急救】java.lang.process的exec方法运行ffmpeg的视频转码linux命令,为何视频只能转一部分进程就结束?
runtime方法运行linux系统命令视频转码:ffmpeg -i 1.avi -ar 22050 -ab 56 -f flv -y -s 320x240 1.flv
为何只能转前面部分视频不能把视频全部转换?这个转码命令放在linux命令行里运行就可以把视频全部转换!是java进程的问题么?
我查了一些文档,说:process的waitFor方法可以等待子进程的完成。 如果已终止该子进程,此方法立即返回。 如果没有终止该子进程,进程的调用将阻塞,直到退出子进程。
可我调了很多次还是不可以,大家多帮忙参考
程序如下:
import java.io.*;
public class process{
public static void main(String args[]){
Runtime runtime = Runtime.getRuntime();
Process process =null;
String line=null;
InputStream is =null;
InputStreamReader isr=null;
BufferedReader br =null;
try
{
process =runtime.exec("ffmpeg -i 03.avi -ar 22050 -ab 56 -f flv -y -s 320x240 05.flv");
try{
process.waitFor();
}catch(Exception e){}
is = process.getInputStream();
isr=new InputStreamReader(is);
br =new BufferedReader(isr);
if(process.exitValue() == 0){
System.out.println("ok!");
}else{
System.out.println("error!");
}
is.close();
isr.close();
br.close();
}catch(IOException e )
{
System.out.println(e);
runtime.exit(1);
}
}
}