How can I limit FFMpeg CPU usage?

41,620

Solution 1

You can't limit FFMpeg to a percentage of CPU use, but you can set the -threads parameter on your FFMpeg call, if you have 4 cores try set it to -threads 2 that should limit you to around 50% CPU.

Another solution might be to lower the priority on your FFMpeg process, to something lower than your applications.

Solution 2

Just for peoples who try to find solutions for using in terminal (bash, zsh, or on servers)...

nice -n 20 cpulimit -l 60 -i ffmpeg -threads 1 -i in.avi out.mp4

nice is program used for setting priority. Read man nice to know what -n argument mean at your system. On macOS 20 is lowest and -20 is highest.

cpulimit is open source utility used to control cpu usage (Linux/OS X/FreeBSD).

On MacOS this need sudo.

Solution 3

Check this answer: https://superuser.com/a/214572/458727

I used Battle Encoder Shirasé to throttle down FFMPEG. BES is open-source, so watching its code can help to get an idea.

Share:
41,620
Mert Sevinc
Author by

Mert Sevinc

Updated on June 11, 2020

Comments

  • Mert Sevinc
    Mert Sevinc about 4 years

    I am calling FFMpeg inside a C# Windows Forms application. Since it uses so much CPU (always above 90%), none of my threads can continue working. Is there a way to limit this CPU usage?

    I've tried to set Process.PriorityClass to PriorityClass.BelowNormal but this totally blocked the ffmpeg process.

    I am sure there is a way to do this since I see a lot of programs that utilize ffmpeg.

    Please help.