Flash actionscript3中的嵌入式mp3赢得';Don’我一路玩不完

Flash actionscript3中的嵌入式mp3赢得';Don’我一路玩不完,flash,actionscript-3,audio,air,flash-builder,Flash,Actionscript 3,Audio,Air,Flash Builder,我嵌入了一个mp3文件作为我的应用程序的背景音乐。虽然它工作正常,但问题是它不能播放整个曲目,只播放前32秒(mp3文件为1:30分钟) 这里有人知道为什么吗 我已经读到,可能声音不适合支持的flash player声音格式,但我不认为这是问题所在!文件没那么大,但也许我错了 知道是什么引起了问题吗?或者如何修复它?代码很好,我确信(非常简单。只是嵌入了mp3,初始化了所需的变量并播放了声音。没什么特别的) 编辑:mp3的编码频率为44100 KHz 编辑这是代码,以防万一 package {

我嵌入了一个mp3文件作为我的应用程序的背景音乐。虽然它工作正常,但问题是它不能播放整个曲目,只播放前32秒(mp3文件为1:30分钟)

这里有人知道为什么吗

我已经读到,可能声音不适合支持的flash player声音格式,但我不认为这是问题所在!文件没那么大,但也许我错了

知道是什么引起了问题吗?或者如何修复它?代码很好,我确信(非常简单。只是嵌入了mp3,初始化了所需的变量并播放了声音。没什么特别的)

编辑:mp3的编码频率为44100 KHz

编辑这是代码,以防万一

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();
        }

    }
}

我敢肯定,每次你让音乐播放时,它都会重新启动。有没有可能你让它玩了好几次?如果它总是正好是32秒,那么我不知道,但是如果它总是在同一时间,那么请注意您在这段时间内正在做什么,并检查是否有可能再次调用play()函数

如果你的应用程序在某处有某种30秒计时器,它肯定是有责任的


编辑:呵呵,如果声音是整个应用程序中唯一存在的东西,那么没关系。但无论如何要记住这一点。

您的背景声音实例可能正在被垃圾收集,因为您没有维护对它的引用。试试这个:

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();
        }
   }
}

正如前面提到的链接所表明的,问题确实出在mp3文件本身。基本上它太大了。所以在将它从44kHz立体声32位减少到44kHz立体声16位后,它工作得很好,现在它一直运行。尽管如此,我们不能嵌入更高质量的mp3文件还是有点奇怪。我假设这个问题不会是加载(而不是嵌入)的问题,但我还没有测试过它。如果在座的任何人对如何在不降低mp3质量的情况下解决此问题有想法,请与我们分享

好吧,从最初的问题开始已经两年了,但我也遇到了同样的问题,但只有短(不到2秒)的文件。原来问题出在元数据上。如果元数据说声音是1秒长,而实际上是1.5秒,Flash只会播放1秒的声音,而其他的声音则会被切断

在从
wav
转换到
mp3
时,我通过不在文件中包含元数据解决了这个问题


希望这能帮助别人

你试过另一个mp3吗(只是为了找出原因)?我刚检查过。我从我的库中随机添加了一首歌,现在它根本不播放了。trace(backgroundMusic.length)实际上给出了0…这很奇怪,我刚试过的新mp3比原来的(播放30年的)大。所以,这可能是大小问题?原始mp3文件的长度是多少?36301.49659863945,即36秒,它播放36秒,而不是我所说的30秒(或32秒或其他什么)(我的错误,我计算错了)。奇怪的是,当我刚刚切换到另一个mp3(一个更大的)时,它的长度为0…如果有帮助的话,我添加了代码。是的,它正好在32秒停止。我调用play(),所以它只播放一次文件,而且它肯定不会绑定到任何计时器。我不认为这是垃圾收集问题,因为我从backgroundMusic调用play()。不管怎样,我试过了,但没有解决问题。都一样,30秒就停止了。不过值得一试,谢谢你=)