Comunidad de diseño web y desarrollo en internet online

Leer las etiquetas ID3 de un MP3 en Actionscript 3

Los archivos de audio en formato MP3 pueden contener metadatos con la información relacionada al nombre de la canción, del disco, del año, etc... Estos metadatos son necesarios para poder catalogar los archivos de audio en programas como iTunes. Este sistema de etiquetado de archivos MP3 es lo que se denomina el ID3.

En este webtip veremos como recuperar la información de las etiquetas ID3 del archivo que estamos reproduciendo en nuestra película flash.

Anteriormente ya vimos como reproducir un audio en formato MP3 con actionscript 3, así que utilizaremos esa clase como punto de partida y la ampliaremos para implementar la recuperación de la información del archivo.

EL primer paso será añadir las nuevas clases que vamos a necesitar: Las clases ID3Info y Event.

Código :

package {
   import flash.display.Sprite;
   import flash.net.URLRequest;
   import flash.media.Sound;
   import flash.media.SoundLoaderContext;
   import flash.media.ID3Info
   import flash.events.Event;

La clase ID3Info contiene las propiedades de los metadatos ID3, que son los siguientes:
  • album : String // El nombre del álbum.
  • artist : String // El nombre del grupo/cantante.
  • comment : String // El comentario añadido.
  • genre : String // El estilo de música
  • songName : String // El nombre de la canción.
  • track : String // El número de track.
  • year : String // El año del disco.
La clase Event la necesitaremos para añadir un evento que detecte la carga de metadatos ID3 a la hora de cargar el archivo MP3. Añadiremos el addEventListener al objeto de sonido en el constructor de la clase.

Código :

public function Sonido(qUrl:String, qBuffer:Number, qIni:Number, qLoop:Number){
   url = new URLRequest(qUrl);
   buffer = new SoundLoaderContext(qBuffer*1000);
   ini = qIni*1000;
   loop = (qLoop >= 0) ? qLoop : int.MAX_VALUE;
   so = new Sound(url, buffer);
   so.play(ini, loop);
   so.addEventListener(Event.ID3, onID3);
}

De esta manera al cargar el archivo MP3, si este contiene metadatos ID3 se ejecutará el método onID3.

Ahora toca crear esta función:

Código :

public function onID3(event:Event):void{
   var soInfo:ID3Info = ID3Info(so.id3);
   trace("artist: " + soInfo.artist);
   trace("track: " + soInfo.track);
   trace("comment: " + soInfo.comment);
   trace("songName: " + soInfo.songName);
   trace("album: " + soInfo.album);   
   trace("genre: " + soInfo.genre);
   trace("year: " + soInfo.year);
}

Únicamente hemos añadido unos traces que nos montarán la información del archivo de audio. Aquí cada cual añadirá los comandos que le interesen según las necesidades de su película. Como por ejemplo, colocar estos datos dentro de Fields o de componentes...

Pd: La creación del objeto ID3Info no es del todo necesaria ya que podríamos haber accedido a los metadatos directamente del objeto Sound,aunque nunca está de más:

Código :

trace("artist: " + so.id3.artist);

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate