Я не думаю, что есть решение для двоичных данных в формате mp3, но если это WAV, то это должно работать:
private function loaded(event:Event):void {
var urlStream:URLStream = event.target as URLStream;
bArr = new ByteArray();
urlStream.readBytes(bArr, 0);
/**
* Remove wav header here
*/
bArr.position = 0;
sampleMP3.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler);
soundChannel = sampleMP3.play();
}
private function sampleDataHandler(event:SampleDataEvent):void {
var bytesToRead:int = (bArr.bytesAvailable > 65536 ? 65536 : bArr.bytesAvailable);
event.data.writeBytes(bArr, bArr.position, bytesToRead);
bArr.position += bytesToRead;
}
Не забудьте удалить WAV-заголовок перед выборкой данных. Кроме того, он работает только при частоте дискретизации 44,1 кГц. Для других частот дискретизации вам нужно вручную повторить или удалить сэмплы, чтобы сделать его похожим на 44,1 кГц. Обращайте внимание на монофонические звуки, так как вам необходимо предоставить сэмплы левого и правого каналов для Flash, поэтому вам необходимо повторить сэмплы.
Хорошей отправной точкой является класс WavDecoder в пакете popforge audio.format.wav.