2012-07-06 291 views
2

我在C#Windows窗體應用程序中調用FFMpeg。由於它使用了非常多的CPU(幾乎100%),所以我的線程都不能繼續工作。有沒有辦法限制這個CPU使用率?如何限制FFMpeg CPU使用率?

下面是我工作的代碼,

Process ffmpeg = new Process(); 
ffmpeg.StartInfo.UseShellExecute = false; 
ffmpeg.StartInfo.FileName = '..\ffmpeg.exe' 
ffmpeg.StartInfo.CreateNoWindow = true; 
ffmpeg.Start(); 

我試圖Process.PriorityClass設置PriorityClass.BelowNormal但這完全阻斷ffmpeg的過程。

還有其他出路嗎?

+0

可能重複[我怎樣才能限制FFmpeg的CPU使用率?](http://stackoverflow.com/questions/4565567/how-can -i-limit-ffmpeg-cpu-usage) – 2012-07-06 07:37:12

+0

你說得對,但我怎樣才能使用-threads參數?我無法找到一個適當的教程來實現-threads。 – user735647 2012-07-06 07:39:51

+1

您將-threads傳遞給FFMPeg作爲參數。我會很快發佈一個例子。 – 2012-07-06 07:40:30

回答

3

這裏

How can I limit FFMpeg CPU usage?

概述的解決方案是限制FFmpeg的使用不到計算機上可用的內核數量的線程數。

您的評論之後,你可以提供的Argument via StartInfo

Process ffmpeg = new Process(); 
ffmpeg.StartInfo.UseShellExecute = false; 
ffmpeg.StartInfo.FileName = "..\ffmpeg.exe"; 
ffmpeg.StartInfo.Arguments = "-threads 2"; // <=== Add this line 
ffmpeg.StartInfo.CreateNoWindow = true; 
ffmpeg.Start(); 
+0

非常感謝:)讓我試試 – user735647 2012-07-06 07:44:50

+0

我設置了-threads = 1,但是它對CPU的使用率沒有任何影響。 – user735647 2012-07-06 07:54:42

+0

參數的語法是「-threads 1」而不是「-threads = 1」。你的代碼字面上有一個等號嗎?如果是這樣,請將其刪除。 – 2012-07-06 18:32:41