如何限制FFMpeg CPU使用率?

时间:2010-12-30 19:24:58

标签: c# ffmpeg

我在C#Windows窗体应用程序中调用FFMpeg。由于它使用了这么多的CPU(总是超过90%),我的线程都无法继续工作。有没有办法限制CPU使用率?

我尝试将Process.PriorityClass设置为PriorityClass.BelowNormal,但这完全阻止了ffmpeg进程。

我确信有一种方法可以做到这一点,因为我看到很多程序都使用ffmpeg。

请帮忙。

3 个答案:

答案 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是开源的,因此观看其代码可以帮助您了解想法。