6

コンストラクターが次の AudioRecord クラスを使用しています。

AudioRecord(
    int audioSource, int sampleRateInHz,
    int channelConfig, int audioFormat, int bufferSizeInBytes)

インターネットで見つけたすべての (またはほとんどの) チュートリアルと例では、次のように bufferSizeInBytes を設定することをお勧めします。

bufferSizeInBytes= getMinBufferSize (
    int sampleRateInHz, int channelConfig, int audioFormat) 

誰か理由を教えてくれませんか?

記録している値とパターンを関連付ける必要があります。このパターンは MinBufferSize よりも長いです。したがって、bufferSizeInBytes を好みの値に増やすだけでよいでしょうか、それとも AudioRecord のパフォーマンスが悪化するのでしょうか。

4

1 に答える 1

7

誰か理由を教えてくれませんか?

特定の構成に対して返されるgetMinBufferSizeのは、作成時に指定できる最小のバッファー サイズであるためですAudioRecord

可能な限り小さいバッファ サイズが必要なのはなぜですか? レイテンシを可能な限り低くするため。
SPL メーターのようなものを使用していると想像してください。UI が音圧の変化に反応するまでに 1 秒の遅延が発生することは望ましくありません。

ただし、バッファ サイズによって から要求できるデータ量が決まるわけではありませんread()AudioRecord'sバッファーのサイズよりも多くのデータを要求しても問題ありません。read()要求したすべてのデータが読み取られるまで、戻りません。

于 2013-09-16T13:12:35.847 に答える