ffmpegを呼び出すJAVEを使用して、*。movファイルを*.mp4ファイルにトランスコードしようとしています。入力ファイルと出力ファイルはどちらもInputStream形式とOutputStream形式です。つまり、入力ストリームと出力ストリームをffmpegの-iおよび-yパラメーターとして渡す必要があります。それ、どうやったら出来るの ?
//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:パイプが閉じています」というエラーが発生し続けます。誰かが私を助けてくれますか?あるいは、このトランスコーディングを実行できるJAVA APIがある場合(WindowsおよびRedHat Linuxの場合)、それは非常に役立ちます
ありがとう