what versiones plataforma evolution evolucion animate flash actionscript-3 audio air flash-builder

flash - plataforma - versiones de adobe animate



MP3 incrustado en actionscript3 no se reproducirá por completo (4)

Integré un archivo mp3 para ser utilizado como música de fondo para mi aplicación. Aunque funciona bien, el problema es que no reproduce toda la pista, solo reproduce los primeros 32 segundos (el archivo mp3 es 1:30 min).

¿Alguien aquí tiene alguna idea de por qué?

He leído aquí que tal vez el sonido no encaja en el formato de sonido de flash compatible, ¡pero no creo que ese sea el problema! El archivo no es tan grande, pero tal vez estoy equivocado.

¿Alguna idea de cuál es la causa del problema? O como arreglarlo. El código está bien, estoy seguro de eso (es bastante simple. Simplemente incorporé el mp3, inicialicé la variable requerida y reproduje el sonido. Nada de lujos)

EDITAR : el mp3 está codificado a 44100 KHz

EDITAR Aquí está el código, solo en el caso

package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; public class BackgroundMusic extends Sprite { [Embed(source="swfs/bg.mp3")] private var BG:Class; public function BackgroundMusic() { var backgroundMusic:Sound = new BG(); backgroundMusic.play(); } } }


Bueno, han pasado 2 años desde la pregunta original, pero tuve el mismo problema, pero solo con archivos cortos (menos de 2 segundos). Resultó que el problema era con los metadatos. Si los metadatos dicen que el sonido dura 1 segundo y en realidad es 1.5 segundos, Flash solo reproducirá 1 segundo de sonido y cortará el resto.

Resolví el problema al no incluir metadatos con el archivo al convertir de wav a mp3 .

Espero que ayude a alguien.


Como sugiere el enlace mencionado anteriormente, el problema fue en realidad con el archivo mp3 en sí. Básicamente era demasiado grande. Así que después de reducirlo de 44 kHz estéreo de 32 bits a 44 kHz estéreo de 16 bits funcionó bien, y ahora funciona completamente. Dicho esto, es un poco raro que no podamos incrustar archivos mp3 de mayor calidad. Supongo que este problema no sería un problema con la carga (en lugar de la incrustación), pero no lo he probado. Si alguien aquí tiene una idea sobre cómo solucionar este problema sin reducir la calidad del mp3, por favor comparte


Estoy bastante seguro de que la música se reiniciará cada vez que le digas que juegue. ¿Es posible que le diga que juegue varias veces? Si siempre es EXACTAMENTE de 32 segundos, entonces no sé, pero si siempre está ALREDEDOR al mismo tiempo, tal vez preste atención a lo que está haciendo en ese momento y compruebe si es posible que vuelva a llamar a la función play ().

Si su aplicación tiene algún tipo de temporizador de 30 segundos en algún lugar definitivamente puede ser responsable.

EDITAR: jeje Si el sonido es lo único presente en toda la aplicación, entonces no importa. Pero es bueno tenerlo en cuenta de todos modos.


Su instancia de sonido de fondo probablemente está recibiendo basura recolectada, ya que no está manteniendo una referencia a ella. Prueba esto:

package { import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; public class BackgroundMusic extends Sprite { [Embed(source="swfs/bg.mp3")] private var BG:Class; private var _backgroundMusic:Sound; public function BackgroundMusic() { _backgroundMusic = new BG(); _backgroundMusic.play(); } } }