最初のステップは、mp3を解凍することです。これをバッチジョブとして実行している限り、LAMEをライブラリとして使用するのではなく、既存のコマンドラインプログラムを使用してmp3を一時的なWAVファイルに変換するだけで済みます。これははるかに簡単です。次に、WAVファイルを読み取るためのライブラリを見つけます。これは比較的単純な形式であり、オンラインで多くのサンプルコードを見つける必要があります。または、午後に独自のコードを作成することもできます。
曲の長さが60分であるとします。60分*60秒/分*44100サンプル/秒=158,760,000サンプル。(ステレオソングの場合は2倍です。)画像の幅が1000ピクセルの場合、158,760サンプルごとに1つのサンプルのみを表示する必要があります。
(余談ですが、その解像度では詳細があまり表示されません。おそらく、最初の5分間の波形を表示するか、ユーザーがスクロールできる大きな画像をレンダリングする方がよいでしょう。)
とにかく、158,760サンプルの各ブロックのオーディオサンプル(この例では)を読み取り、オーディオのその部分の信号の強さを表す垂直線としてレンダリングします。これを行うには2つの方法があります。
- その領域の最大値
- その領域の二乗平均平方根(RMS)値
Maximumはピークを表示し、RMSは全体的に知覚されるラウドネスを表示します。どちらも簡単に実装できます。両方を試して、どちらが最もよく見えるかを確認してください。
次に、その結果の画像をgifに変換する必要があります。とにかくこれはバッチジョブなので、私があなたなら、BMPファイル(本当に簡単なファイル形式)を書き、ImageMagickの「変換」のようなコマンドラインプログラムを使用してそれをGIFに変換します。
最後に、最後にもう1つ注意してください。本当に注意が必要な場合は、MP3フレームを読み取って、すべてをデコードせずにビットストリームから直接ゲインを抽出できます。それは私がここでしたことです、そしてあなたはそれを使うことを歓迎します-しかしそれは気弱な人のためではありません。完全なMP3をデコードするよりも約100倍高速ですが、得られる波形は大まかな概算になります。