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! 😛
Gracias Elad por avisar de estas cosillas que siempre nos vuelven locos 😉
Un saludo!!