A maneira mais rápida de converter uma grande quantidade de FLACs em MP3s

2

Estou procurando algo que possa aproveitar minha GPU ou, no mínimo, vários núcleos da minha CPU para converter alguns terabytes de FLAC para mp3 (VBR v0) muito rapidamente, preservando todas as tags.

Qualquer conselho é muito apreciado.

    
por switz 21.06.2013 / 00:54

3 respostas

3

Dependendo da estrutura do diretório (os dados são planos?), você pode chutar um número de pacpl em paralelo. Ele faz um trabalho razoável em preservar tags ao converter.

Ele não utilizará GPU, mas com alguma paralelização você poderá usar vários núcleos (o disco pode se tornar o gargalo).

    
por 21.06.2013 / 00:58
2

OK, então isso é, na verdade, vários problemas.

A utilização de vários núcleos não seria muito difícil, isso poderia ser conseguido com um script de shell e bifurcação.

Aqui está um exemplo muito simples em zsh:

for f in *flac; do
    sox $f ${f%%.flac}.mp3 & 
done

É claro que você poderia otimizar isso para o número de seus núcleos e fazer as conversões em lotes.

Agora, preservar tags é uma coisa diferente, eu provavelmente começaria com SoX e veria se isso pode ajudar você. Se não, usaria metaflac para despejar os dados em um pequeno script, que definiria minhas tags do MP3 (meu programa favorito para isso é eyeD3 ). Eles precisam ser "traduzidos" por você mesmo como tags FLAC (que na verdade são apenas comentários do Vorbis) para tags ID3.

Algo parecido com isto:

for f in *flac; do
    eyeD3 -a $(metaflac --show-tag-name=ARTIST $f) ${f%%.flac}.mp3
done

Isto é claro, apenas uma tag, etc., é apenas para demonstração. Você poderia combinar os dois trechos, é claro.

No entanto, não posso ajudá-lo a otimizar o problema a ser resolvido por uma GPU. Não vejo bem como isso ajudaria muito, já que as GPUs são otimizadas para o cálculo vetorial.

    
por 21.06.2013 / 05:48
0

Eu não usei essa ferramenta, mas parece que você está procurando. Chama-se flac2all . Especificamente esta bala:

  • CPU/Core detection, for automatic selection of # of threads.

Uso

flac2all.py with "-h" to get an overview, like so:

Usage: 
flac2all [convert type] [input dir] <options>
where 'convert type' is one of:
         [mp3]: convert file to mp3
         [vorbis]: convert file to ogg vorbis
         [flac]: convert file to flac
         [aacplusnero]: (NO TAGGING SUPPORT) convert file to aacplus using the proprietery (but excellent) Nero AAC encoder.

Options:
  -h, --help            show this help message and exit
  -c, --copy            Copy non flac files across (default=False)
  -v OGGENCOPTS, --vorbis-options=OGGENCOPTS
                        Colon delimited options to pass to oggenc,for example:
                        'quality=5:resample 32000:downmix:bitrate_average=96'.
                        Any oggenc long option (one with two '--' in front)
                        can be specified in the above format.
  -l LAMEOPTS, --lame-options=LAMEOPTS
                        Options to pass to lame, for example:
                        '-preset extreme:q 0:h:-abr'. Any lame option can be
                        specified here, if you want a short option (e.g. -h),
                        then just do 'h'. If you want a long option (e.g. '--
                        abr'), then you need a dash: '-abr'
  -a AACPLUSOPTS, --aacplus-options=AACPLUSOPTS
                        AACplus options, currently only bitrate supported.
                        e.g: " -a 64 "
  -o DIR, --outdir=DIR  Set custom output directory (default='./')
  -f, --force           Force overwrite of existing files (by default we skip)
  -t THREADS, --threads=THREADS
                        How many threads to run in parallel (default:
                        autodetect [found 2 cpu(s)] )
  -n, --nodirs          Don't create Directories, put everything together

Demonstração em vídeo

Existe até um vídeo no Youtube demonstrando saturar um sistema de 16 núcleos, intitulado: flac2all saturando a máquina de 16 CPUs (dual quad core + HT) .

    
por 02.12.2013 / 03:33