ローカル 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 サンプルのレベルが出力されます。より多くの値を取得するには、これを繰り返す必要があります。