Передача FileInputStream и FileOutputStream в ffmpeg для перекодирования (с использованием кодирования аудио-видео JAVE-Java)

Я пытаюсь перекодировать файл * .mov в файл * .mp4 с помощью JAVE, который вызывает ffmpeg. И входной файл, и выходной файл находятся в формах InputStream и OutputStream. Это означает, что мне нужно передать InputStream и OutputStream как параметры -i и -y для ffmpeg. Как мне это сделать?

    //Read a movfile.mov converted into a FileInputStream  
    InputStream fileInputStream = getFileInputStream();  
    OutputStream fileOutputStream = new FileOutputStrea(outputMP4File) //Output        
    Process p = Runtime.exec("ffmpeg -i - -y -");  
    InputStream pInStrm = p.getInputStream();  
    OutputStream pOutStrm = p.getOutputStream();  
    int vin = 0, vout = 0;   

    Thread read = new Thread() {  
         byte[] buff = new byte[4096];  
          void run() {   
            while ((vin=fileInputStream.read(buf))!=-1) {   
                 pOutStrm.write(buf, 0, vin);   
            }   
         }   
      }; read.start();

    Thread write = new Thread() {  
        byte[] buff = new byte[4096];  
        void run() {  
             while ((vout=pInStrm.read(buf))!=-1) {  
                 fileOutputStream.write(buf, 0, vout);  
            }  
         }  
      }; write.start();  

Но я продолжаю получать ошибку «IOException: pipe is closed». Может ли кто-нибудь мне помочь? В качестве альтернативы, если есть какой-либо JAVA API, который мог бы выполнять эту перекодировку (в Windows и RedHat Linux), это было бы очень полезно

Спасибо

6
задан Jagan S 19 February 2012 в 00:56
поделиться