论坛首页 入门技术论坛

Java调用外部程序

浏览 2338 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-06-17  
Java web开发调用外部ffmpeg或mencoder转码...
遇到的问题是ffmpeg或mencoder进程阻塞, 需要停掉tomcat--javaw.exe进程之后才能执行ffmpeg.exe或mencoder.exe
问题的原因: getErrorStreamgetInputStream 缓冲区没有清空
解决的方法: 同时清空getErrorStream getInputStream 的缓冲区
代码如下:
       ProcessBuilder builder = new ProcessBuilder();
       builder.command(commend);
       Process process = builder.start();
      final InputStream is1 = process.getInputStream();
      new Thread(new Runnable() {
             public void run() {
                     BufferedReader br = new BufferedReader(new InputStreamReader(is1));    
            try {
              while(br.readLine() != null) ;
             } catch (IOException e) {
               e.printStackTrace();
             }
             }
       }).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
       InputStream is2 = process.getErrorStream();
       BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));    
       StringBuilder buf = new StringBuilder(); // 保存输出结果流
       String line = null;
      while((line = br2.readLine()) != null) buf.append(line);
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics