我想阅读能够跨本地 mp3 的间隔将分贝值存储到文本文件中的内容。我想一旦我有了值,我就可以处理写入文本文件(尽管任何帮助都会很棒)
我想用 AS3 做到这一点
非常感谢
我想阅读能够跨本地 mp3 的间隔将分贝值存储到文本文件中的内容。我想一旦我有了值,我就可以处理写入文本文件(尽管任何帮助都会很棒)
我想用 AS3 做到这一点
非常感谢
首先,您必须加载 MP3,例如,通过使用Sound.load()
,或将其包含在 Flash IDE 的库中并将其导出以用于 ActionScript。然后您可以使用Sound.extract()
从 MP3 中抓取波形数据。这将为您提供包含在 a 中的间隔的示例数据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 个样本的电平。您必须重复此操作才能获得更多值。