Я пытаюсь воспроизвести звук, используя технику, найденную здесь (воспроизводить звук путем выборки необработанных звуковых данных, собранных из оригинала с помощью 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);
}
}
Это работает, в некотором смысле, за исключением того, что результирующий звук искажается (он имеет вид металлического кольца). Что я делаю не так?