我想阅读能够将本地mp3的间隔内的分贝值存储到文本文件中。我想我可以处理一个文本文件一旦我有值(虽然任何帮助会很棒) 最好
我想使用AS3
这样做非常感谢
答案 0 :(得分:0)
首先,您必须加载MP3,例如,使用Sound.load()
,或者将其包含在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个样本的水平。你必须重复这个以获得更多的价值。