Ich versuche, eine Möglichkeit zu finden, die Priorität des ffmpeg-Prozesses festzulegen. Der Server konvertiert eingehende Videos in verschiedene Auflösungen. Neue Videos sollten eine höhere Priorität haben und schneller konvertiert werden als vorhandene Prozesse.
Es sollte ähnlich wie SJF- (Shortest Job First) oder LIFO-Algorithmen (Last In First Out) funktionieren.
Gibt es eine Möglichkeit, dies mit ffmpeg zu tun?
Ich laiche Prozesse wie diese
ffmpeg -i "${video_path}" -strict experimental -movflags faststart -vf "${resolution}" "${output_path}" >> "${ffmpeg_log}" 2>&1
Notiz:
Ich habe die Lösung bereits getestet nice
. Es sieht so aus, als ob sie nicht funktioniert. Ich habe 2 ffmpeg-Prozesse mit Priorität 10 und -10 gestartet, und der, der früher gestartet wurde, wurde früher abgeschlossen
Antwort1
Sie rufen einfach annice
bevor der Prozess aufgerufen wird, zusammen mit dem Niceness-Wert.
Auf den Manpages nice
erfahren Sie, wie Sie genau herausfinden, wie „nett“ ein Prozess ist, d. h. niedrigere Werte == weniger nett, höhere Priorität.
nice --5 "ffmpeg -i...."
würde ffmpeg mit einem Nice-Wert von -5 starten, wodurch es eine höhere Priorität erhält als etwas mit einem Nice-Wert von -1.
0 ist normalerweise der Standardwert. Ein höherer Wert bedeutet, dass Sie eine niedrigere Priorität als die Standardpriorität haben.