встроенный mp3 в actionscript3 не будет воспроизводиться до конца - PullRequest
4 голосов
/ 10 января 2012

Я встроил mp3-файл, который будет использоваться в качестве фоновой музыки для моего приложения.Хотя он работает нормально, проблема в том, что он не воспроизводит весь трек, он просто проигрывает первые 32 секунды (файл mp3 занимает 1:30 мин).

Кто-нибудь здесь знает, почему?

Я прочитал здесь , что, возможно, звук не соответствует поддерживаемому формату звука флэш-плеера, но я нене думаю, что это проблема!Файл не такой большой, но, может быть, я ошибаюсь?

Есть идеи, что является причиной проблемы?Или как это исправить?Код в порядке, я в этом уверен (он довольно прост. Просто вставил mp3, инициализировал необходимую переменную и проиграл звук. Ничего особенного)

EDIT : mp3 кодируется в44100 кГц

РЕДАКТИРОВАТЬ Вот код, просто incase

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

    }
}

Ответы [ 4 ]

2 голосов
/ 20 октября 2014

Прошло 2 года с момента первоначального вопроса, но у меня была такая же проблема, но только с короткими (до 2 секунд) файлами.Оказалось, проблема была с метаданными.Если метаданные говорят, что звук длится 1 секунду, а на самом деле он составляет 1,5 секунды, Flash будет воспроизводить только 1 секунду звука, отключая все остальное.

Я решил проблему, не включив метаданные в файл при преобразовании из wav в mp3.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 25 января 2012

Как указывает вышеупомянутая ссылка, проблема действительно заключалась в самом файле mp3.В основном это было слишком велико.Таким образом, после снижения с 44 кГц стерео 32 бит до 44 кГц стерео 16 бит он работал нормально, и теперь он работает до конца.С учетом всего вышесказанного странно, что мы не можем встраивать более качественные mp3-файлы.Я предполагаю, что эта проблема не будет проблемой при загрузке (а не встраивании), но я не проверял ее.Если у кого-то здесь есть идея, как решить эту проблему без снижения качества mp3, пожалуйста, поделитесь

0 голосов
/ 10 января 2012

Ваш экземпляр фонового звука, вероятно, собирает мусор., Так как вы не поддерживаете ссылку на него. Попробуйте это:

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();
        }
   }
}
0 голосов
/ 10 января 2012

Я почти уверен, что музыка будет перезагружаться каждый раз, когда вы говорите ей играть.Возможно ли, что вы говорите, чтобы он играл несколько раз?Если это всегда ровно 32 секунды, тогда я не знаю, но если это всегда вокруг того же времени, возможно, обратите внимание на то, что вы делаете в это время, и проверьте, возможно ли, что вы снова вызываете функцию play ().

Если ваше приложение где-то имеет 30-секундный таймер, оно наверняка ответственно.

РЕДАКТИРОВАТЬ: хе-хе Если звук - это единственное, что присутствует во всем приложении, то не обращайте внимания.Но все равно хорошо иметь в виду.

...