Portadas de Álbum en tus MP3 con FFMPEG.

Blog22 septiembre 2020

Una forma muy sencilla de anexar a tus archivos mp3 una portada de álbum es por medio del maravilloso FFMPEG, en lo personal, el mejor convertidor de formatos de audio y video que conozco, quizá una de sus limitantes es que su uso es a través de la interfaz de comandos o consola (shell), pues carece originalmente de una interfaz de usuario gráfica (GUI), razón por lo que muchos prefieran emplear otro software de un solo clic.

Para los que estamos encariñados y acostumbrados a labores administrativas de sistemas por medio de la consola, este convertidor nos abre una amplia gama de posibilidades como hacer conversiones automáticas de muchos archivos de una manera automática sin la necesidad de estar convirtiendo de uno por uno, si te interesa esta obra maestra de software libre, que funciona prácticamente en cualquier tipo de sistema operativo, este es su link del sitio oficial: https://ffmpeg.org/

Entrando en materia de esta entrada de blog, este poderoso convertidor también nos puede servir para agregar metadatos a los archivos de video y audio y aprovecharemos esta función para agregar nuestras propias portadas de álbum a nuestros archivos mp3 que carecen de esta ó bien se las deseamos cambiar, para poder llevar a cabo este proceso solo es necesario tener de preferencia todos los archivos .mp3 en una carpeta y un archivo de imagen .JPG o .PNG con la imagen de portada:

Vista del contenido de la carpeta de los mp3 desde el Shell y ahí se aprecia el archivo de portada: «cover.jpg».
Vista de los mp3 y el archivo de portada desde el explorador de archivos, nótese que carecen de imagen de portada los archivos mp3.

El proceso se llevará a cabo en Linux, por la facilidad que facilitan sus consolas shell, sin embargo se puede replicar en PowerShell o el símbolo de sistema de windows (CMD) si se conocen sus equivalencias, o en su defecto instalar el Sistema Linux de Windows (WSL o WSL 2) con alguna distribución de tu gusto y realizar en Linux sobre tus archivos de Windows, el proceso que se muestra a continuación:

Dentro de la carpeta donde se encuentran los mp3 y nuestro archivo de portada, (por ejemplo cover.jpg) mismo que se pondrá en todos los archivos mp3 de la carpeta ejecutamos:

for f in ./*.mp3; do \
ffmpeg -i "$f" -i cover.jpg -map 0:0 -map 1:0 -codec copy -id3v2_version 3 -metadata:s:v title="Cover (front)" -metadata:s:v comment="Cover (front)" out-"${f#./}"\
&& mv out-"${f#./}" "$f"; done

Ejecutando las instrucciones en el Shell, Bash en este caso.
Proceso una vez finalizado.
Ahora en el explorador de archivos o al abrir los mp3 en tu reproductor de música favorito se puede observar que aparecen con la caratula del álbum.

El proceso se encargará de crear una copia de los mp3 con un nombre que comienza con la letra f pues el FFMPEG no puede modificar el archivo que está leyendo como entrada, guardará una copia con la portada en dicho archivo que comenzará con la letra f, de tal manera que las instrucciones que tecleamos también se encargarán de sustituir los mp3 originales con los nuevos, por lo que al final del proceso no quedarán copias de archivos con portadas y los sin portadas, únicamente quedarán los actualizados con la portada, ahora se podrá eliminar el cover.jpg si así se desea, pues ya no es necesario.

Esto es pues un proceso bastante sencillo y aplicable en cualquier carpeta de archivos que contenga mp3, sin necesidad de alterar nada, solo asegurarnos de que el archivo de imagen cualquiera que sea su nombre debe ponerse tal cual en la instrucción del FFMPEG, o bien renombrarlo a cover.jpg y copiar y pegar el código mostrado para ejecutarlo sin cambios o bien guardarlo en un archivo .sh, para ejecutarlo cuando se deseé.

Si se desea remover las portadas de álbum de los mp3 para disminuir un poco su tamaño sin sacrificar su calidad, o simplemente quitarselas porque se quiere, el proceso sería:

for f in ./*.mp3; do \
ffmpeg -i "$f" -map 0:a -codec:a copy -map_metadata -1 out-"${f#./}"\
&& mv out-"${f#./}" "$f"; done