Воспроизведение звука из данных, полученных из Sound.extract () - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь воспроизвести звук, используя технику, найденную здесь (воспроизводить звук путем выборки необработанных звуковых данных, собранных из оригинала с помощью extract ()), с той разницей, что звук mp3 встроен в SWF, не загружен внешне. Это мой код:

var soundBytes:ByteArray = new ByteArray();
var mp3sound:Sound = Sound(new Sound1_design());  // this is the embedded sound
mp3sound.extract(soundBytes, int.MAX_VALUE);

soundBytes.position = 0;

var rawSound:Sound = new Sound();
rawSound.addEventListener(SampleDataEvent.SAMPLE_DATA, playbackSampleHandler);
rawSound.play();

function playbackSampleHandler(event:SampleDataEvent):void
{
     for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++) 
     {
        var left:Number = soundBytes.readFloat();
        var right:Number = soundBytes.readFloat();
        event.data.writeFloat(left);
        event.data.writeFloat(right);
     }
}

Это работает, в некотором смысле, за исключением того, что результирующий звук искажается (он имеет вид металлического кольца). Что я делаю не так?

1 Ответ

1 голос
/ 02 августа 2011

Я попытался скомпилировать его через mxmlc и через Flash CS5, и он отлично работает.Я протестировал его, используя 128 кбит / с и mp3 320 кбит / с в моем [Embed(source="..")].

Вероятно, это какая-то другая настройка, которая влияет на вывод звука, но трудно сказать.Используете ли вы очень низкую частоту кадров в вашем SWF?Может быть, некоторые настройки Flash Player странные, как Lotus, упомянутый в его комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...