0

私はAudioQueueからサンプルを取得して、iPhoneで(iTunesのように)音楽のスペクトルを表示しようとしています。

私はたくさんの投稿を読みましたが、ほとんどすべてが、再生ではなく、録音時にサンプルを取得することについて質問しています:(

オーディオのストリーミングにAudioQueueサービスを使用しています。次のポイントを理解するのに役立ちます:1 /どこでサンプルにアクセスできますか(PCM、非mp3(mp3ストリームを使用しています)2 / fftを適用するために自分のバッファーにサンプルを収集する必要がありますか?3/周波数を取得することは可能ですか? fft変換なし?4 /バッファ内のfftシフトを現在再生中のサンプルと同期するにはどうすればよいですか?

ありがとう、

アップデート:

AudioQueueProcessingTapNew

iOS6 +の場合、これは私にとっては問題なく機能します。しかし、iOS5はどうですか?

4

1 に答える 1

1

オーディオを再生する場合、Audio Queue コールバックにサンプルをフィードする前にサンプルを取得するという考え方です。圧縮されたオーディオ ファイル形式は、事前に生の PCM サンプルに変換する必要がある場合があります。これは、AVFoundation コンバーターまたはファイル リーダー サービスのいずれかを使用して行うことができます。

その後、Audio Queue コールバック バッファへのフィードに使用されたものと同じソースからデータのフレームをコピーし、可視化のために FFT またはその他の DSP をそれらに適用できます。

FFT またはバンドパス フィルターのバンクを使用して周波数情報を取得できますが、FFT はこの点で非常に効率的です。

同期は試行錯誤しながら行う必要があります。Apple は正確なオーディオとビューのグラフィック表示の遅延を指定しておらず、いずれにしても iOS デバイスと OS のバージョン間で異なる可能性があるためです。ただし、Audio Queue バッファを短くするか、RemoteIO Audio Unit を使用すると、オーディオ レイテンシをより適切に制御でき、OpenGL ES を使用すると、グラフィック レイテンシをより適切に制御できます。

于 2012-12-22T03:58:28.843 に答える