0

ローカル mp3 の間隔全体でデシベル値をテキスト ファイルに保存できるようにしたいと考えています。値を取得したら、テキスト ファイルへの書き込みを処理できると思います (ただし、どんな助けも素晴らしいでしょう)

AS3でやりたい

そしてどうもありがとう

4

1 に答える 1

0

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

于 2011-04-02T22:19:20.687 に答える