Introdução
Estava precisando de um conversor flac para mp3 que mantivesse as tags ID3 do arquivo. Assim, depois da conversão, o nome da música, álbum e artista ainda estariam no arquivo.
Em [1], vemos que o ffmpeg pode ser usado para isso. Primeiro, entre no diretório de músicas:
$ cd /pasta/de/musicas/flac
e execute o seguinte comando (só copiar, colar no terminal e dar ENTER):
for FILE in *.flac; do ffmpeg -i "$FILE" -ab 320k -map_metadata 0 "${FILE%.*}.mp3"; done
Ok, funciona!! E se quisermos acelerar a conversão executando alguns comandos paralelamente? Isso pode ser facilmente feito usando o xargs[2].
find . -print0 -name '*.flac' |\ xargs -0 -P 4 -I'{}' -n 1 ffmpeg -i \{\} -ab 320k \ -map_metadata 0 \{\}.mp3
Melhor ainda se colocarmos tudo isso dentro de um script:
#!/bin/bash # salve como: flac3mp3 # uso: flac2mp3 <dir flac> <dir mp3> # Mon Jun 30 13:58:05 BRT 2014 # Número de threads (xargs) P=4 if [ -z "$1" ] || [ -z "$2" ] then echo '[uso] ./flac2mp3 <diretorio flac> <diretorio mp3>' exit fi [ ! -d "$1" ] && echo "[-] Impossivel abrir: $1" && exit [ -d "$2" ] || mkdir "$2" echo "[+] Espere, convertendo..." find "$1" -print0 -name '*.flac' | \ xargs -0 -P $P -I'{}' -n 1 ffmpeg -i \{\} -ab 320k\ -map_metadata 0 \{\}.mp3 2>/dev/null for FILE in "$1"/*.mp3 do echo "Movendo "$(basename "$FILE" .flac.mp3).mp3 mv "$FILE" "$2/$(basename "$FILE" .flac.mp3).mp3" done
A execução é simples:
$ chmod +x flac2mp3 $ ./flac2mp3 /pasta/de/musicas/flac pasta_mp3
Verificando com ps aux, é possível ver que há mais de um arquivo sendo convertido ao mesmo tempo. Por fim, só conferir se os arquivos estão na pasta:
$ ls pasta_mp3 01 - Mark Taylor - Vintage Future.mp3 02 - Martian 044 - Prayer Stick.mp3 03 - Remote - Protecting My Hive.mp3 04 - Suburban Knight - Black Strategy.mp3 05 - UR - Codebreaker.mp3 16 - Underground Resistance - Phiber Optik Commando (MOD Mix)
Referências
[1] Convert flac to mp3 using ffmpeg, retain ID3 tags by Annie Mullin (Acessado em: 30/06/2014)
http://herself.movielady.net/2011/06/21/convert-flac-to-mp3-using-ffmpeg-retain-id3-tags/