O avconv (ou ffmpeg, do qual o avconv é um fork) pode fazer isso na linha de comando:
avconv -i input.flac -c:a alac output.m4a
Ele deve preservar os metadados por si só.
Para fazer todos os flac em um diretório:
for f in ./*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done
Para executar todos os flac recursivamente (no diretório atual e em todos os subdiretórios):
shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done
Se você tem os flacs nos arquivos ogg ou algo assim, obviamente mude ./*.flac
para ./*.ogg
.
Eu acho que isso deve funcionar com o avconv / ffmpeg dos repositórios (já que o ALAC é lançado sob a licença Apache e pode ser distribuído legalmente), embora eu tenha a versão do medibuntu instalada.
Se você quiser se livrar dos arquivos originais, pode rm
inserir o loop. Esta versão usa o -n
sinalizador para avconv, portanto, não substituirá nenhum arquivo ALAC já existente, e usar em &&
vez de;
significa que se o avconv parar com um erro, o arquivo FLAC original não será excluído:
for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done
Observe que a exclusão de arquivos com rm é irreversível (fora da recuperação forense de dados), portanto, tenha cuidado ao usá-lo.