我正在尝试使用JAVE调用ffmpeg将*.mov文件转换为*.mp4文件。 输入文件和输出文件都以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:管道已关闭”错误。有人能帮助我吗?如果有任何可以在Windows和RedHat Linux上执行此转码的JAVA API,那将非常有帮助。谢谢。