
However, if a process is only given so much memory (say by the kernel) and it requests more memory that it cannot have, it will crash. There is a way to cage processes, with the timeout script, so that when a process and any child processes take up too much memory (a limit set by you) they are terminated safely and a notification is displayed. The kernel automatically controls memory allocation for processes. If you're worried about memory usage, too, know that it is not possible to tell a process to only take so much memory and still run. Scroll down to the process named ffmpeg, left click it to select, right click it, and set the priority to "Low" or "Very Low". With ffmpeg running, open the System Monitor.

It is better to concentrate on using different ffmpeg options that will achieve the same result in a way that uses less resources. You can omit this if you're uploading it to YouTube or only playing it on VLC, mpv, MPlayer, or any other FFmpeg based player. I added -vf format=yuv420p to ensure the output works with dumb players like QuickTime and Windows Media Player. Use the slowest preset you have patience for: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow. A subjectively sane range is 18-28, where 18 is visually lossless or nearly so. You can experiment with the -crf value to control output quality. The output from the first command will be huge, and most dumb players can't handle RGB H.264 so you can re-encode it: ffmpeg -i temp.mp4 -c:v libx264 -crf 23 -preset medium -vf format=yuv420p out.mp4

The output will be lossless because -crf 0 is used. This uses the quickest x264 encoding preset: ultrafast. The input is RGB, so using the encoder libx264rgb will avoid the potentially slow RGB to YUV conversion that would occur if you use plain libx264.

Make a lossless RGB output first ffmpeg -y -framerate 25 -video_size 1280x1024 -f x11grab -i :0.0 -c:v libx264rgb \
