Talvez não seja exatamente o que você está pedindo, mas eu uso o seguinte script para essa tarefa:
#!/bin/bash
#
# convert FLAC-files to MP3
# (similar folder structure, max quality)
#
export path=<flacpath>
export out=<mp3path>
echo "" > doit.sh
find $path -name \*.flac | (
while read i; do
echo
echo "$i"
newfile='echo $i | sed s,$path,, | sed s,.flac,.mp3, | sed s,\",,g'
echo $out/$newfile
targetdir='dirname "$newfile"'
echo $targetdir
echo "mkdir -pv \"$out/$targetdir\"" >> doit.sh
echo "ffmpeg -y -i \"$i\" -aq 2 \"$out/$newfile\"" >> doit.sh
done
)
Isto é apenas uma espécie de modelo, altere 'flacpath' e 'mp3path' conforme necessário. O arquivo 'doit.sh' que é gerado pode ser editado e então executado como sh doit.sh
As tags FLAC serão incluídas no MP3, desde que sejam suportadas.
Eu acho que existem soluções muito melhores, mas isso funciona para mim.
Para dar um exemplo:
Eu tenho um registro digitalizado no FLAC
/data/music_out/FLAC/Jimi_Hendrix/Smash_Hits/...
e eu quero converter isso para
/tmp/out/MP3/Jimi_Hendrix/Smash_Hits/...
Assumindo que o ffmpeg está instalado (caso contrário sudo install ffmpeg
), eu configurei
export path=/data/music_out/FLAC/Jimi_Hendrix/Smash_Hits
export out=/tmp/out/MP3/Jimi_Hendrix/Smash_Hits
no script acima. Quando executado, o script cria outro arquivo de script chamado doit.sh
com o conteúdo
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/01-Purple Haze.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//01-Purple Haze.mp3"
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/02-Fire.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//02-Fire.mp3"
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/03-The Wind Cries Mary.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//03-The Wind Cries Mary.mp3"
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/04-Can You See Me.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//04-Can You See Me.mp3"
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/05-51st Anniversary.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//05-51st Anniversary.mp3"
mkdir -pv "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//"
ffmpeg -y -i "/data/music-out/FLAC/Jimi_Hendrix/Smash_Hits/06-Hey Joe.flac" -aq 2 "/tmp/out/MP3/Jimi_Hendrix/Smash_Hits//06-Hey Joe.mp3"
...
apenas para esclarecer a ideia. Chamando sh doit.sh
a ação será feita.
Se houver charcters especiais (até mesmo como '') em seu caminho, você precisará alterar algumas partes do script. E sim, o mkdir -pv
é redundante neste exemplo. Mas isso não faz mal, e o script é mantido assim simples.