Se você está satisfeito com o Terminal, pode tentar o seguinte loop de comando:
for f in * .flac; do ffmpeg -i "$ f" -vf "crop = ((in_w / 2) * 2): ((in_h / 2) * 2)" -c: a alac "$ {f% .flac} .m4a"; done
Isso simplesmente percorrerá todos os arquivos .flac no diretório atual e os converterá em .alac até que estejam todos prontos. Posso confirmar que isso funciona no Linux onde o ffmpeg está disponível gratuitamente nos repositórios. Para OSX, você pode instalar o ffmpeg via homebrew, e também há compilações estáticas para Windows, OSX e Linux listadas no site do ffmpeg.
Isso irá preservar os metadados, mas a forma como o M4A armazena as imagens de capa é fundamentalmente diferente da forma como o FLAC (e a maioria dos outros formatos de áudio) o faz. Infelizmente, o FFmpeg atualmente não consegue lidar com isso. Felizmente, você pode extrair a capa como uma imagem jpeg na mesma etapa da transcodificação do áudio e, em seguida, usar outra ferramenta de linha de comando (AtomicParsley) para mesclar a capa no M4A.
ffmpeg -i input.flac -vf "crop = ((in_w / 2) * 2): ((in_h / 2) * 2)" -c: uma saída alac.m4a cover.jpgAtomicParsley output.m4a --artwork cover.jpg --overWrite
Isso pode ser colocado em um loop for; os &&
s significam que o próximo comando só será executado se o comando anterior for bem-sucedido.
for f em * .flac; do ffmpeg -i "$ f" -vf "crop = ((in_w / 2) * 2): ((in_h / 2) * 2)" -c: a alac "$ {f /% flac / m4a}" " $ {f /% flac / jpg} "&& \ AtomicParsley" $ {f /% flac / m4a} "--artwork" $ {f /% flac / jpg} "--overWrite && \ rm" $ {f /% flac / jpg} "; feito