Próbuję transkodować plik * .mov do pliku * .mp4 przy użyciu JAVE, który wywołuje ffmpeg. Zarówno plik wejściowy, jak i plik wyjściowy są w formularzach InputStream i OutputStream. Oznacza to, że muszę przekazać InputStream i OutputStream jako -i i -y parematers dla ffmpeg. Jak to zrobić?Przekazywanie FileInputStream i FileOutputStream do ffmpeg w celu transkodowania (przy użyciu JAVE-Java Audio Video Encoding)
//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();
ale wciąż otrzymuję "IOException: rura jest zamknięty" błąd. Czy ktoś może mi pomóc? Alternatywnie, jeżeli istnieje jakikolwiek Java API, które mogłyby to zrobić transkodowania (w systemach Windows i Linux RedHat), że byłoby bardzo pomocne
Dzięki