Tip: ¿Por qué carga dos veces los ID3 el objeto Sound de AS3?

elad . martes 21 de septiembre de 2010. a las 09:25

El otro día me topé con que aparentemente se cargaban dos veces las cabeceras ID3 al hacer un load de un archivo en formato MP3 en un objeto Sound de AS3, y por tanto pasaba dos veces por la función que escuchaba el evento Event.ID3. Me resultó cuanto menos extraño, asi que me puse a investigar un poco este tema.

El código sería el siguiente:

var path:URLRequest = new URLRequest("musica.mp3");
var sound:Sound = new Sound();
sound.load(path);

sound.addEventListener(Event.ID3, id3_handler);

function id3_handler(event:Event)
{
    var datos:ID3Info = Sound(event.target).id3;
    trace("Canción: "+datos.songName);
    trace("Artista: "+datos.artist);
    trace("Album: "+datos.album);
    trace("Género: "+datos.genre);
    trace("Año: "+datos.year);
}

La solución al «misterio» es que existen 2 tipos de ID3:

  • Las ID3 1.0, se encuentran al final del archivo y por tanto no disponibles hasta la carga completa del audio.
  • y las (¿nuevas y mejoradas?) ID3 2.0, que se encuentran al inicio del archivo.

De esta forma, si un archivo contiene las dos etiquetas ID3 (1.0 y 2.0) el evento Event.ID3 se lanzará (y será escuchado) dos veces.

Aunque soy consciente de que esto se encuentra en la propia documentación, os publico esto para los que sois como yo y os volvéis locos googleando y buscando en todos los blogs antes que en las docs! 😛

Etiquetas: , , , , ,

1 Comentario
» Feed RSS de los Comentarios

  1. Toni dice:

    Gracias Elad por avisar de estas cosillas que siempre nos vuelven locos 😉

    Un saludo!!

Enviar comentario