miércoles, 28 de abril de 2010

Metadatos en los archivos de audio (y II)

En un post reciente trataba el asunto de los metadatos en los archivos de audio, principalmente MP3 y Vorbis, y recomendaba un par de programas para editarlos, tanto en Windows como en Linux. Ambos hacen uso de una interfaz gráfica para importar y modificar de distintas formas la información de las canciones, permitiendo además renombrar los archivos a partir de esta (o viceversa.)

El problema es que a veces uno puede necesitar leer o modificar esos metadatos que contienen los archivos de audio desde la consola, por ejemplo para automatizar ciertas manipulaciones mediante el uso de un shell script. Como no podía ser de otra forma, Linux cuenta con numerosos programas de consola para estos menesteres:
  • mp3info: muestra información técnica sobre los archivos MP3 y permite leer y editar (también de forma interactiva) sus metadatos. Sólo soporta ID3v1.x.
  • id3tool: sencilla herramienta especializada en leer y escribir metadatos de archivos MP3 en su versión ID3v1.x.
  • id3v2: permite listar, editar y convertir etiquetas ID3 en sus versiones 1.x y 2.3, pero no en la 2.4.
  • mid3v2: es una reimplementacion del anterior usando mutagen, un módulo Python que lo hace más potente que la herramienta original, soportando todas las versiones de ID3. La única nota negativa es que no permite escribir etiquetas en formato ID3v1.1, aunque sí las lee.
  • eyeD3: script Python que permite listar, editar y convertir los metadatos ID3 en todas sus versiones y con distintas codificaciones, permitiendo además elegir entre versión 1.x y 2.x. El programa de consola más completo entre los citados para trabajar con MP3.
  • vorbiscomment: es la herramienta oficial (incluida en vorbis-tools) para listar o manipular los metadatos de archivos Vorbis. Cuenta con todas las funcionalidades necesarias.
  • metaflac: sería la herramienta equivalente para los archivos de audio en formato de compresión sin pérdida FLAC.
Todas estas herramientas pueden utilizarse de forma no interactiva desde consola o dentro de un shell script para tratar con metadatos de archivos MP3, Vorbis y FLAC. Algunas de ellas están portadas a Windows y las que no, probablemente cuenten con alguna alternativa similar, aunque la aparición de nuevos programas de consola desarrollados expresamente para este sistema operativo es cada vez más rara.

En el caso del formato MP3 y volviendo al mundo Linux, conviene utilizar aquellas más actuales que soporten el mayor número de versiones de ID3: mid3v2 o eyeD3, dependiendo de nuestras necesidades concretas (un vistazo a sus páginas de manual nos ayudarán a decidir) y principalmente de si necesitamos escribir metadatos en versión ID3v1.x. Esto podría sernos útil al escribir metadatos en archivos MP3 que vayan a usarse también en Windows (prácticamente cualquier MP3 que pensemos compartir ;) ya que aunque los tags ID3v2.4 (con su codificación UTF-8) son ampliamente soportados por los reproductores de Linux, parece ser que Windows Media Player (al menos hasta el momento) se ha quedado en la versión 2.3. Aprovechando que las etiquetas de ID3v1.1 se escriben en otra parte del archivo MP3 (al final y no al principio) y para no dejar de usar el mejor estándar posible por culpa de WMP, puede ser conveniente escribir también las etiquetas versión 1.1 para que los reproductores "obsoletos" tengan metadatos a los que hincarles el diente ;-)

Para acabar este segundo post sobre el tema sólo me queda presentar TagSaR (de Tag Save and Restore), un shell script que tras varias modificaciones he dado por terminado recientemente. Su función es salvar a archivos los metadatos de canciones MP3, Vorbis o FLAC y poder restaurarlos posteriormente desde esos mismos archivos de etiquetas (archivos de texto con extensión .tag) a los archivos de audio en cualquiera de los tres formatos. Internamente hace uso de algunas de las herramientas comentadas y para el caso de los archivos MP3 escribe en los dos formatos ID3 comentados para una mayor compatibilidad con los reproductores de audio. Espero sea de utilidad a alguién más (a mí ya me ha compensado el esfuerzo del parto ;)