1

私が達成しようとしていることは、基本的に次のとおりです。

  1. ファイルを開き、その期間に基づいて必要な「サンプル」の数を決定します
  2. ファイルを x サンプルに分割します。各サンプルの(平均)パワーレベル/振幅を決定します。
  3. これらのサンプル値を使用して、オーディオを表す波形の描画に進みます (これらのガイドラインに従ってください)。

私は約 3 日間オンライン フォーラム、本、API を綿密に検索しましたが、役に立ちませんでした。私は最も重要なステップで立ち往生しています->オーディオのチャンク(バッファ)のパワーレベルを決定しています。

Core Audio bookのほとんどを読んで、AudioQueues、Audio Units、そしてある程度 OpenAL の低レベル環境に慣れてきました。ただし、私が見たすべての例と説明 (この本と Web 上の他の場所) はすべて、オーディオ ファイルの再生中または録音中に (つまり、リアルタイムで) 電力レベル値を決定することを扱っています。

ただし、私の目的は、リアルタイムで再生することなく、ディスク上の特定のファイルのこれらの値を迅速かつ効率的に決定することです。どのライブラリ、機能を調べる必要があるかについてのガイダンスは大歓迎です。

ありがとう。

4

2 に答える 2

1

これを実現する方法はいくつかあります。ファイル全体をメモリに読み込んでから、分析を適用できます。または、ファイルのチャンクを読み取り、AudioFile.h の AudioFileReadPackets(...) を使用して各チャンクの平均レベルを取得します。

于 2011-08-07T13:38:18.387 に答える
0

どの部分に引っかかっていますか?私はまだファイルの読み書きをいじっていないので、他の誰かがその面であなたを助けることができます. しかし、オーディオ ストリームを実際に処理するという点では、加速フレームワークを使用する必要があります。これには、必要なデータを取得するための関数が含まれています。電力レベルを取得するために、最初に信号を FFT する必要があるかどうかはわかりません。

もしそうなら、アクセラレートフレームワークでFFTを実行する方法について、Apple FFTとアクセラレートフレームワークを使用して長い回答を書きました 。

関数のリストを調べたのを覚えています。信号のピーク電力と平均電力を見つけるための関数があります。これらの関数を利用するために、オーディオ信号を一連の float として読み込みたいと思うでしょう。

于 2011-08-07T13:54:03.973 に答える