avconv em vários encadeamentos

9

É possível executar trabalhos em vários processadores ou encadeamentos para acelerar o avconv?
Existe um recurso em andamento, se não me pergunto por quê?

    
por Shubham Chaudhary 25.05.2014 / 00:02

2 respostas

11

Você está após a opção -threads do avconv. A configuração mais segura seria:

 -threads auto

mas você também pode definir um número inteiro se quiser experimentar um pouco. Um moderno FFmpeg (agora o padrão no Ubuntu) define que é auto por padrão como visto nesta seção das páginas man do '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 pontos importantes:

  1. Esta configuração só terá efeito se o codec escolhido suportar multi-threading
  2. É possível definir a contagem de encadeamentos para fluxos individuais em vez de simplesmente tentar uma configuração de encadeamento global
por andrew.46 25.05.2014 / 01:13
3

Se você estiver fazendo transcodificação de áudio de muitos arquivos, procure usar o GNU Parallel. Ele pegará uma lista de arquivos como entrada e os processará em paralelo com base no número de núcleos em seu sistema. Por exemplo, aqui está um exemplo básico que converterá músicas no formato de áudio opus em paralelo usando o 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
    
por mmstick 25.05.2014 / 11:23