Convirtiendo FLAC a ALAC, preservando etiquetas - en un script

3

Actualmente estoy creando un script para mantener bibliotecas de música paralelas, porque tengo dispositivos que no pueden reproducir FLAC, pero prefiero almacenar mi música en ese formato. Sin embargo, estoy teniendo algunos problemas con la parte que convierte FLAC a ALAC. Actualmente solo envía FFMPEG para hacer el trabajo. Sin embargo, parece que FFMPEG (versión 0.5.9) no puede preservar las etiquetas. -map_meta_data infile: outfile no funciona ... tampoco -map_meta_data outfile: infile, -map_meta_data 0: 0 o -map_meta_data 0: 0, s0 (o algo así), todo lo cual había visto que la gente sugería .

Entonces ... ahora estoy buscando un programa de línea de comandos (o una biblioteca de Python) que pueda convertir FLAC a ALAC en Linux, al tiempo que conserva los datos de la etiqueta. Incluso sería aceptable si tuviera que copiar las etiquetas después de la conversión, pero tampoco puedo encontrar una solución para eso. He intentado QLCLI, pero parece fallar al importar Quod Libet. Estoy tratando de hacer que todo esto funcione con Ubuntu. ¿Alguna sugerencia?

Eric Astor
fuente
1
¿Puedes probar una versión más reciente de FFmpeg? Puede compilarlo desde la fuente como se documenta en la página de inicio
slhck
1
En Ubuntu 12.04 LTS, parece que la versión provista de ffmpeg conserva las etiquetas. Acabo de intentarlo ffmpeg -i "in.flac" -acodec alac "out.m4a"y todas las etiquetas parecen haberse convertido.
mivk

Respuestas:

1

El ffmpeg actual (versión 2.0.2 mientras escribo esto) admite tanto la decodificación como la codificación para ALAC. Y copia los metadatos globales del primer archivo de entrada de forma predeterminada.

Invocando así:

ffmpeg -i track01.flac -c:a alac track01.m4a

produjo un archivo ALAC con los metadatos copiados.

Roland Smith
fuente
-1

Si el archivo de audio de origen tiene una portada incrustada, ffmpeg lo convertirá en un video, que probablemente no sea lo que desea. El comando completo es:

ffmpeg -i file.flac -vn -acodec alac file.m4a

Y en modo por lotes:

ls *flac | while read f; do
    ffmpeg -i "$f" -acodec alac -vn "${f[@]/%flac/m4a}" < /dev/null;
done

El -vninterruptor hará que ffmpeg ignore las partes de "video" del archivo fuente. Las etiquetas se transferirán al archivo de destino, pero preferiría usar el etiquetador Picard para volver a etiquetar los nuevos archivos utilizando una sólida base de datos de artista / trabajo / lanzamiento como MusicBrainz.

Aquí hay técnicas más avanzadas:

https://avi.alkalay.net/2016/09/multimedia-linux-cli.html

avibrazil
fuente