3

次の行を実行すると

final String[] command = new String[]{ffmpeg -y -i /home/user/video.mov -ss 0 -t 20 -vcodec libx264 -vpre slow -crf 18 -f flv -bf 0 -g 10 -vsync 1 -r 30 -an -threads 0 -s 1920x1080 /home/user/video0.flv};

final Process process = Runtime.getRuntime().exec(command, null, null);

ffmpeg を起動し、video.mov の最初の 20 秒を video.flv に変換します。ただし、高解像度のビデオでは、OutOfMemory がスローされることがあります。明らかに、ffmpeg は大量のメモリを消費します。

私の質問は次のとおりです-Javaから開始された外部プロセスは、JavaヒープスペースまたはOSメモリからメモリを取得していますか?

これを知っていれば、-Xms および -Xmx パラメータを調整する方法がわかります。外部プロセスが OS メモリを使用する場合、-Xms と -Xmx を低い値のままにします (OS の空きメモリを増やします)。それ以外の場合は、-Xms と -Xmx を高い値に設定して、Java プロセスにより多くのメモリを割り当てます。

4

1 に答える 1

3

別の OS レベルのネイティブ プロセスを開始しています。これは、JVM メモリ、ヒープなどとは関係ありません。

于 2012-05-23T12:51:27.810 に答える