ローカル mp3 の間隔全体でデシベル値をテキスト ファイルに保存できるようにしたいと考えています。値を取得したら、テキスト ファイルへの書き込みを処理できると思います (ただし、どんな助けも素晴らしいでしょう)
AS3でやりたい
そしてどうもありがとう
ローカル mp3 の間隔全体でデシベル値をテキスト ファイルに保存できるようにしたいと考えています。値を取得したら、テキスト ファイルへの書き込みを処理できると思います (ただし、どんな助けも素晴らしいでしょう)
AS3でやりたい
そしてどうもありがとう
まず、MP3 をロードする必要があります。たとえば、 を使用Sound.load()
するか、Flash IDE のライブラリに MP3 を含めて ActionScript 用にエクスポートします。Sound.extract()
次に、MP3 から波形データを取得するために使用できます。ByteArray
これにより、読み取ることができる にパックされた間隔のサンプル データが返されます。
サンプルは [-1.0, 1.0] の範囲にあるため、間隔の強度レベルを計算する簡単な方法の 1 つは、サンプル間の最大絶対値を見つけることです。コード例を次に示します。
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 サンプルのレベルが出力されます。より多くの値を取得するには、これを繰り返す必要があります。