Сначала необходимо загрузить MP3, например, используя Sound.load()
или включив его в свою библиотеку в IDE Flash и экспортировав его для ActionScript. Затем вы можете использовать Sound.extract()
, чтобы получить данные формы сигнала из MP3. Это вернет вам данные выборки за интервал, упакованный в ByteArray
, который вы можете прочитать.
Выборки находятся в диапазоне [-1.0, 1.0], поэтому один простой способ рассчитать уровень интенсивности для интервала - это найти максимальное абсолютное значение среди выборок. Вот пример кода:
var sound:Sound = new Sound();
sound.load(new URLRequest("sound.mp3"));
sound.addEventListener(Event.COMPLETE, onSoundLoaded);
function onSoundLoaded(event:Event):void {
var byteArray:ByteArray = new ByteArray();
sound.extract(byteArray, 4096);
byteArray.position = 0;
var max:Number = 0;
while(byteArray.position != byteArray.length)
{
var sample:Number = Math.abs(byteArray.readFloat());
if(sample > max) max = sample;
}
trace(max);
}
Это выведет уровень для первых 4096 сэмплов. Вам придется повторить это, чтобы получить больше значений.