0


ビートスライスのようなことをしたいです。

AudioQueueLevelMeterState を定期的に取得するタイマーを設定できます。

しかし、AudioQueueLevelMeterState が照会された時間を AudioQueueBuffer の内容と関連付ける方法はないようです。

たとえば、バッファの長さが 1 秒だとします。メーターの状態を 1 秒あたり 60 回クエリするタイマーを実行します。0.5 秒で、必要なレベルを取得します。したがって、レベルを取得した時点から、つまり残りの 0.5 秒からそのオーディオ バッファーのチャンクを取得したいと考えています。

何か案は?いわばバッファ内ですべてを行う方法はありますか?

アドバイスをいただければ幸いです。

どうもありがとう、xj

4

2 に答える 2

1

最終的にこれをソートしました。オーディオを録音する方法として AudioQueue を捨て、代わりに AudioUnit を使用しました。AudioQueue は非常に難しかったため、最終的には、自分がやりたいことに使用するのに適切な API であるかどうかを真剣に疑問視する必要がありました。一部のフォーラムでは、AudioUnits を扱うのは難しいと人々が言っ​​ていましたが、正直なところ、私が AudioQueue で経験したすべてのことを考えると、AudioUnit は非常に簡単でした。

とにかく、私自身の質問に答えるために。最終的には、計測と録音の同期の問題を解決する必要があったため、レベルをサンプリングするタイマー メカニズムを廃止しました。私はまだ AudioQueue を使用していますが、計測のためだけです。レコーディング コールバックではkAudioQueueProperty_CurrentLevelMeter、AudioQueue から を取得します。レコーディング コールバックはフレーム カウントを受け取るので、フレーム位置をメーター サンプルと完全に同期させることができます。

于 2011-05-31T13:44:40.140 に答える
0

Apples Speak Here のサンプル プロジェクトを確認してください。彼らはあなたがハッキングできるかもしれない同様の設定をしています。

于 2011-04-08T07:27:56.047 に答える