Je vois qu'il y a un -threads <count>
option de ligne de commande dans ffmpeg. Quelle est la valeur par défaut de cette option ?
Réponses
Trop de publicités?Depuis 2014, il utilise un nombre optimal.
Vous pouvez vérifier cela sur un ordinateur multi-core en examinant la charge du CPU (Linux : top
Windows : gestionnaire de tâches) avec différentes options de ffmpeg :
-
-threads 0
(optimal) ; -
-threads 1
(single-threaded) ; -
-threads 2
(2 threads pour, par exemple, un Intel Core 2 Duo) ; -
aucun (la valeur par défaut, également optimale).
Edition 2015 : sur un CPU à 12 cœurs, certaines commandes ffmpeg ont Linux top
montrant au maximum 200% de cpu (seulement 2 cœurs), quel que soit le nombre donné à -threads
. Ainsi, la valeur par défaut peut être optimale dans le sens de "aussi bon que ce binaire ffmpeg peut l'être", mais pas optimale dans le sens de "exploiter pleinement mon processeur leet".
En 2015 sur Ubuntu 14.04 avec ffmpeg 0.8.10-6, il utilisait 1 cœur sur un système à 4 cœurs. htop
a montré ceci ; un seul cœur était utilisé, et j'ai obtenu un taux de conversion de 16 fps pour une vidéo FullHD.
Utilisation de -threads 4
a fait passer tous mes cœurs de CPU à 100% et j'ai obtenu un taux de conversion de 47 fps.
J'ai utilisé la commande suivante :
$ ffmpeg -i foo.mp4 -y -target pal-dvd -aspect 16:9 dvd-out.mpg
Je jouais avec la conversion dans une VM CentOS 6.5 (Ryzen 1700 8c/16t - vm attribué 12 des 16 cœurs). Les expériences avec des films 480p ont donné les résultats suivants :
Option de filage/Taux de conversion (fps @ 60 secs)
(none/default)/130fps
-threads 1/70fps
-threads 2/120fps
-threads 4/185fps
-threads 6/228fps
-threads 8/204fps
-threads 10/181fps
La partie intéressante était la charge du CPU (en utilisant htop
pour le regarder).
Ne pas utiliser -threads
L'option s'est retrouvée dans la gamme des 130fps avec une charge répartie sur tous les noyaux à un niveau de charge faible.
L'utilisation d'un thread a fait exactement cela, en chargeant un cœur à 100%. L'utilisation de n'importe quel autre thread a entraîné une autre situation de charge étalée.
Comme vous pouvez le voir, il y a aussi un point de rendement décroissant, donc vous devrez ajuster l'option -threads pour votre machine particulière. Pour ma configuration spécifique, l'utilisation de l'option -threads 6 (sur une machine à 12 cœurs) a permis d'obtenir la meilleure FPS lors de la conversion de la vidéo (de h264 à x264 à un bitrate différent pour forcer une conversion) et les rendements diminuent au fur et à mesure que j'ajoute des threads.
Cela aurait pu être un problème de mémoire aussi - il n'y avait que 1GB assigné à la VM. Je peux modifier cela et voir si cela change quelque chose. Néanmoins, cela montre que l'utilisation de l'option -threads
peut augmenter les performances. Effectuez donc quelques tests sur votre machine à différents niveaux pour trouver le point idéal pour votre configuration.
- Réponses précédentes
- Plus de réponses