2011-04-02 86 views
0

我想读取能够将本地mp3间隔的分贝值存储到文本文件中。我想我可以处理写入一个文本文件,一旦我有值(虽然任何帮助将是巨大的) 最佳读取mp3十进制值

我想做到这一点使用AS3

和千恩万谢

回答

0

首先,例如,必须使用Sound.load()加载MP3,或者将其加载到Flash IDE的库中并导出为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个采样的级别。你将不得不重复这个来获得更多的价值。

+0

非常感谢帮助 – 2011-04-05 17:55:02