avconv su più thread


9

È possibile eseguire lavori su più processori o thread per accelerare avconv?
C'è una funzione in corso, se non mi chiedo perché?

Risposte:


11

Stai cercando l' opzione -threads di avconv. L'impostazione più sicura sarebbe:

 -threads auto

ma puoi anche impostare un numero intero lì se vuoi sperimentare un po '. Un moderno FFmpeg (ora lo standard in Ubuntu) imposta questo auto per impostazione predefinita, come si vede in questa sezione delle pagine man '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.

Nota 2 punti importanti:

  1. Questa impostazione avrà effetto solo se il codec scelto supporta il multi-threading
  2. È possibile impostare il conteggio dei thread per i singoli stream anziché semplicemente tentare un'impostazione globale del thread

1
Correggimi se hai una fonte al contrario, ma ho l'impressione che Avconv e avplay utilizzino ancora -threads auto come impostazione predefinita se non diversamente specificato. Il monitor di sistema sembra eseguire il backup.
Elder Geek,

1
Credo che dipenda dal codec utilizzato per la transcodifica. Questo potrebbe essere formalmente testato, il che costituirebbe sicuramente un test interessante. Le informazioni che ho trovato online sul problema non sono particolarmente utili. Un altro problema sarebbe la versione di FFmpeg che viene utilizzata, le opzioni di thread sono state utilizzate in modo diverso nelle versioni precedenti ...
andrew.46

1
Sì. FFmpeg e avconv sono andati in direzioni leggermente diverse dalla forcella. Ulteriori ricerche indicano che -threads auto è l'impostazione predefinita in avconv se si utilizza uno dei preset sulla riga di comando.
Elder Geek,

3

Se stai eseguendo la transcodifica audio di molti file, cerca di usare GNU Parallel. Prenderà un elenco di file come input e li elaborerà in parallelo in base al numero di core nel sistema. Ad esempio, ecco un esempio bash che convertirà la musica nel formato audio opus in parallelo usando 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.