3

サーバーにアップロードされた mp3 ファイルのグラフィカルな波形を作成する方法を探しています。少し調査したところ、最初に mp3 を raw 形式に変換する必要があると思いますが、このサウンド ファイルの波形の .gif 形式を作成する方法がわかりません。

サウンド ファイルの 90% は 60 分を超える長さです。

これは、アップロードした直後には実行できないことを理解しています。キューに入れて処理する必要があります。

私はラメなどのいくつかのライブラリを見てきましたが、私が探しているものを達成できるものはないようです。

正しい方向へのポインタは大歓迎です!

どうもありがとうございました!ポール

4

3 に答える 3

11

最初のステップは、mp3を解凍することです。これをバッチジョブとして実行している限り、LAMEをライブラリとして使用するのではなく、既存のコマンドラインプログラムを使用してmp3を一時的なWAVファイルに変換するだけで済みます。これははるかに簡単です。次に、WAVファイルを読み取るためのライブラリを見つけます。これは比較的単純な形式であり、オンラインで多くのサンプルコードを見つける必要があります。または、午後に独自のコードを作成することもできます。

曲の長さが60分であるとします。60分*60秒/分*44100サンプル/秒=158,760,000サンプル。(ステレオソングの場合は2倍です。)画像の幅が1000ピクセルの場合、158,760サンプルごとに1つのサンプルのみを表示する必要があります。

(余談ですが、その解像度では詳細があまり表示されません。おそらく、最初の5分間の波形を表示するか、ユーザーがスクロールできる大きな画像をレンダリングする方がよいでしょう。)

とにかく、158,760サンプルの各ブロックのオーディオサンプル(この例では)を読み取り、オーディオのその部分の信号の強さを表す垂直線としてレンダリングします。これを行うには2つの方法があります。

  1. その領域の最大
  2. その領域の二乗平均平方根(RMS)値

Maximumはピークを表示し、RMSは全体的に知覚されるラウドネスを表示します。どちらも簡単に実装できます。両方を試して、どちらが最もよく見えるかを確認してください。

次に、その結​​果の画像をgifに変換する必要があります。とにかくこれはバッチジョブなので、私があなたなら、BMPファイル(本当に簡単なファイル形式)を書き、ImageMagickの「変換」のようなコマンドラインプログラムを使用してそれをGIFに変換します。

最後に、最後にもう1つ注意してください。本当に注意が必要な場合は、MP3フレームを読み取って、すべてをデコードせずにビットストリームから直接ゲインを抽出できます。それは私がここでしたことです、そしてあなたはそれを使うことを歓迎します-しかしそれは気弱な人のためではありません。完全なMP3をデコードするよりも約100倍高速ですが、得られる波形は大まかな概算になります。

于 2009-12-19T07:55:22.333 に答える
2

FMODまたはBASSを使用すると、非常に簡単にこれを行うことができます。FMOD のダウンロードには視覚化の例が付属していると思いますので、そこから推定できます。どちらも MP3 を読み込み、必要な計算を実行します。

于 2009-12-19T18:55:18.617 に答える
1

ここでC#コードを使用して、波形画像を生成できます。その後、共通System.Drawingライブラリを使用してGIFファイルに保存する必要があります。

于 2009-12-19T07:58:31.593 に答える