Como posso converter minha coleção de músicas FLAC para o Apple Lossless?

13

Tenho uma coleção de músicas de tamanho razoável que mantenho no formato FLAC no meu laptop Ubuntu. Gostaria de começar a tocar essa música no meu Mac e sincronizá-la a partir daí para o meu iPod. As pessoas sugeriram que a melhor maneira de fazer isso é converter minha coleção no ALAC, e eu decidi que é isso que quero fazer.

Antes de mergulhar e escrever scripts de shell personalizados que chamam ffmpegpor algum findcomando complexo , pensei em pedir conselhos.

Como posso converter melhor minha coleção FLAC existente para ALAC, sem perda da qualidade do áudio e preservando todos os metadados?

jml
fonte
Hã. Estou surpreso. Eu pensei que haveria uma escolha óbvia para a ferramenta de transcodificação, mas todas as que posso encontrar estão focadas em vídeo.
RAOF 28/02/12
O que acabei fazendo aqui foi escrever um script Python personalizado chamado metaflac, ffmpeg e AtomicParsley.
JML

Respostas:

21

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 ./*.flacpara ./*.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 rminserir o loop. Esta versão usa o -nsinalizador 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.

evilsoup
fonte
Você sabe como substituir os arquivos flac por alac, em vez de fazer uma cópia alac do arquivo flac?
user138784
@ user13 não, avconv / ffmpeg não pode fazer isso, não pode sobrescrever os arquivos que usa como entrada. Você pode usar rmpara remover os arquivos originais, se desejar.
evilsoup
Eu realmente não sou um guru de linha de comando (sou bastante novo no GNU / Linux), então até agora eu os removia manualmente. (nautilus, organize os arquivos por tipo e, em seguida, posso selecionar todos os arquivos .flac nesse diretório e removê-los). Vou dar uma olhada em como essa coisa "rm" funciona. :)
user138784
@ user138 Eu editei a resposta para mostrar uma implementação rm- embora tome nota do aviso, rmé praticamente irreversível, ele exclui completamente os arquivos em vez de movê-los para a lixeira. Outra alternativa seria usar o globbing após a conclusão do loop (para que você possa verificar se não houve problemas ... se o comando falhar por qualquer motivo, você não quer se livrar dos originais): rm -- *.flacremoveria todos os FLAC no diretório de trabalho.
evilsoup
Obrigado pelo conselho! Normalmente, mantenho os arquivos flac originais em outro diretório, para que não haja risco de perdê-los.
user138784