私はこのコードを持っています:
public InputStream getInputStream() throws Exception {
try {
process = Runtime.getRuntime().exec("ffmpeg -f dshow -i video=\"" + query + "\":audio=\"" + microPhoneName + "\" -r 25 -vcodec mpeg4 -acodec mp3 -f avi -");
}
catch (Exception e) {
}
return process.getInputStream();
}
このコマンドを使用するinputStream.read(b)
と、ほんの少しの時間 (使用するフォーマットとコーデックに応じて 180 ~ 400 回) しか機能せず、その後inputStream
ロックがオンにread
なり、アプリケーションが動作しなくなります。
どうしたの?メモリ飽和 (ffmpeg プロセス メモリは少なくとも 14 MB)? この状況のロックを解除する方法はありますか (メモリをクリーンアップし、ファイルをブリッジとして使用してロックを防止します)。
もちろん、「後処理」ではなく「リアルタイム」が少し必要です。ffmpeg の使用に制約はありません。必要に応じて変更できます。