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 Proce开发者_如何学Goss.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.
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.
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.
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.
精彩评论