¿Cómo puedo convertir mi colección de música FLAC a Apple Lossless?

13

Tengo una colección de música de tamaño razonable que mantengo en formato FLAC en mi computadora portátil Ubuntu. Me gustaría comenzar a reproducir esta música en mi Mac y sincronizarla desde allí con mi iPod. La gente ha sugerido que la mejor manera de hacer esto es convertir mi colección a ALAC, y he decidido que eso es lo que quiero hacer.

Antes de sumergirme y escribir scripts de shell personalizados que invocan ffmpegalgún findcomando complejo , pensé en pedir consejo.

¿Cómo puedo convertir mejor mi colección FLAC existente a ALAC, sin pérdida de calidad de audio y preservando todos los metadatos?

jml
fuente
Huh Estoy sorprendido. Pensé que habría una opción obvia para la herramienta de transcodificación, pero todos los que puedo encontrar están enfocados en el video.
RAOF
Lo que terminé haciendo aquí fue escribir un script de Python personalizado que se llamaba metaflac, ffmpeg y AtomicParsley.
jml

Respuestas:

21

avconv (o ffmpeg, del cual avconv es una bifurcación) puede hacer esto desde la línea de comando:

avconv -i input.flac -c:a alac output.m4a

Debe preservar los metadatos por sí mismo.

Para hacer cada flac en un directorio:

for f in ./*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Para hacer cada flac recursivamente (en el directorio actual y todos los subdirectorios):

shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Si tienes los flacs en archivos ogg o algo, obviamente cambia ./*.flaca ./*.ogg.

Creo que esto debería funcionar con avconv / ffmpeg desde los repositorios (ya que ALAC se publica bajo la licencia de Apache y puede distribuirse legalmente), aunque tengo instalada la versión de medibuntu.

Si desea deshacerse de los archivos originales, puede poner rmen el bucle. Esta versión usa el -nindicador para avconv, por lo que no sobrescribirá ningún archivo ALAC ya existente, y usar en &&lugar de; significa que si avconv se detiene con un error, el archivo FLAC original no se eliminará:

for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done

Tenga en cuenta que eliminar archivos con rm es irreversible (fuera de la recuperación de datos forenses), así que tenga cuidado al usarlo.

maldad
fuente
¿Sabes cómo reemplazar los archivos flac por archivos alac, en lugar de hacer una copia alac del archivo flac?
user138784
@ user13 no, avconv / ffmpeg no puede hacer eso, no puede sobrescribir los archivos que usa como entrada. Puede utilizar rmpara eliminar los archivos originales, si lo desea.
evilsoup
No soy realmente un gurú de la línea de comandos (soy bastante nuevo en GNU / Linux), así que hasta ahora los eliminaba manualmente. (Nautilus, organice los archivos por tipo, y luego puedo seleccionar todos los archivos .flac en ese directorio y eliminarlos). Voy a echar un vistazo a cómo funciona este "rm". :)
user138784
@ user138 He editado la respuesta para mostrar una implementación con rm, aunque tenga en cuenta la advertencia, rmes bastante irreversible, elimina directamente los archivos en lugar de moverlos a la papelera. Otra alternativa sería usar globbing después de que finalice el ciclo (para que pueda verificar que no ha habido problemas ... si el comando falla por alguna razón, no querría deshacerse de sus originales): rm -- *.flaceliminaría todos FLAC en el directorio de trabajo.
evilsoup
¡Gracias por el consejo! Normalmente mantengo los archivos flac originales en otro directorio, por lo que no hay riesgo de perderlos.
user138784