有人知道在 java中使用ffmpeg转码时,怎么判断转码是否已经结束了呢

if(!strFileType.equals(".mp4")&&!strFileType.equals(".flv")&&!strFileType.equals(".mov"))
{
commend.add("E:\ffmpeg\bin\ffmpeg.exe");

commend.add("-i");
commend.add(resourcePath);
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(ServletActionContext.getServletContext().getRealPath("/videos")+"//"+savename+".flv");

                      vE.setVEUrl(savename+".flv");
                                              try {
                            ProcessBuilder builder = new ProcessBuilder(commend);   
                            Process p=builder.start();         //p.waitFor();好像不行啊?。。阻塞了貌似
                        }
                    catch (IOException e) {
                        e.printStackTrace();
                    }

3个回答

用Process.waitFor等待进程结束。

u011533044
小陀螺lalala 那不是会阻塞,直到转码结束了么
接近 5 年之前 回复

如果不想阻塞,那么就可以开个线程什么的监控进程对象是否退出。

danielinbiti
danielinbiti 回复小陀螺lalala: 单独启动一个线程来等待,new Thread(new Runnable() { public void run() { try { p.waitFor(); System.out.println(1); p.destroy(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start();
接近 5 年之前 回复
u011533044
小陀螺lalala 如果用这里面的方法,就会阻塞,直到转码结束,要是用我上面的代码就会开个进程自己转码,不会影响后面的代码。其实我想他开个进程自己转码,转完了告我一声。。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问