我在C#Windows窗体应用程序中调用FFMpeg。由于它使用了这么多的CPU(总是超过90%),我的线程都无法继续工作。有没有办法限制CPU使用率?
我尝试将Process.PriorityClass设置为PriorityClass.BelowNormal,但这完全阻止了ffmpeg进程。
我确信有一种方法可以做到这一点,因为我看到很多程序都使用ffmpeg。
请帮忙。
答案 0 :(得分:21)
您不能将FFMpeg限制为CPU使用的百分比,但您可以在FFMpeg调用上设置-threads
参数,如果您有4个核心,请尝试将其设置为-threads 2
,这应该限制您大约50%的CPU。
另一种解决方案可能是将FFMpeg进程的优先级降低到低于应用程序的优先级。
答案 1 :(得分:13)
仅供尝试在终端(bash,zsh或服务器)上使用的解决方案的人...
nice -n 20 cpulimit -l 60 -i ffmpeg -threads 1 -i in.avi out.mp4
nice
是用于设置优先级的程序。阅读man nice
以了解-n
自变量在您的系统中的含义。在macOS 20上最低,-20最高。
cpulimit是一种开源实用程序,用于控制cpu的使用(Linux / OS X / FreeBSD)。
在MacOS上,这需要sudo。
答案 2 :(得分:1)
检查以下答案:https://superuser.com/a/214572/458727
我使用Battle EncoderShirasé来降低FFMPEG。 BES是开源的,因此观看其代码可以帮助您了解想法。