web-dev-qa-db-fra.com

avconv sur plusieurs threads

Est-il possible d'exécuter des tâches sur plusieurs processeurs ou threads pour accélérer avconv?
Y at-il une fonctionnalité en cours, sinon je me demande pourquoi?

9

Vous êtes après l'option - threads de avconv. Le réglage le plus sûr serait:

 -threads auto

mais vous pouvez aussi y définir un entier si vous voulez expérimenter un peu. Un FFmpeg moderne (maintenant le standard sous Ubuntu) définit ceci comme autopar défaut comme indiqué dans cette section des pages de manuel 'ffmpeg-all':

threads integer (decoding/encoding,video)

Set the number of threads to be used, in case the selected
codec implementation supports multi-threading.

  Possible values:

     auto, 0
     automatically select the number of threads to set

 Default value is auto.

Notez 2 points importants:

  1. Ce paramètre n'aura d'effet que si le codec choisi prend en charge le multi-threading.
  2. Il est possible de définir le nombre de threads pour des flux individuels plutôt que de simplement essayer un paramètre de thread global.
11
andrew.46

Si vous effectuez un transcodage audio de nombreux fichiers, utilisez GNU Parallel. Il faudra une liste de fichiers en entrée et les traiter en parallèle en fonction du nombre de cœurs de votre système. Par exemple, voici un exemple bash qui convertira de la musique au format audio opus en parallèle en utilisant ffmpeg.

find ./* -depth -type f -name \*.ogg -o -name \*.flac -o -name \*.m4a -o -name \*.mp3 -o -name \*.ogg | parallel -j+0 --gnu Nice -n 19 ffmpeg -i "{}" -acodec libopus "{.}.opus" -loglevel quiet
3
mmstick