Я пытаюсь перекодировать файл * .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), это было бы очень полезно
Спасибо