2010-12-30 14 views
13

Sto chiamando FFMpeg all'interno di un'applicazione Windows Form C#. Poiché utilizza tanta CPU (sempre superiore al 90%), nessuno dei miei thread può continuare a funzionare. C'è un modo per limitare questo utilizzo della CPU?Come posso limitare l'utilizzo della CPU FFMpeg?

Ho provato a impostare Process.PriorityClass su PriorityClass.BelowNormal ma questo ha bloccato completamente il processo ffmpeg.

Sono sicuro che c'è un modo per farlo poiché vedo un sacco di programmi che utilizzano ffmpeg.

prega di aiuto.

risposta

20

Non è possibile limitare FFMpeg a una percentuale di utilizzo della CPU, ma è possibile impostare il parametro -threads sulla chiamata FFMpeg, se si dispone di 4 core provare a -threads 2 che dovrebbe limitare a circa il 50% della CPU.

Un'altra soluzione potrebbe essere quella di abbassare la priorità del processo FFMpeg, a un livello inferiore rispetto alle applicazioni.

+0

Quindi stai suggerendo che dovrei abbassare la priorità di esso, se la mia CPU ha un singolo core. Questo è davvero il modo migliore per farlo? –

+1

@Mert, sì per una CPU single core senza hyper threading, abbassando la priorità sarebbe la strada da percorrere. La codifica dei media è un'attività che richiede molta CPU, e se stai cercando qualsiasi tipo di scalabilità dovresti considerare di non eseguire FFMpeg sulla stessa macchina della tua applicazione, in quel caso una soluzione client/server potrebbe essere qualcosa che potresti voler esaminare . Spero che abbia risposto alla tua domanda. –

Problemi correlati