0

Android AudioRecord クラスと Media レコード クラスのオーディオ サンプル レートの設定の違いを知りたいですか? オーディオレコードクラスでは、次のようなクラスのオブジェクトを作成しながらサンプルレートを設定します

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                                            SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

MediaRecorder クラスでは、関数呼び出しを介して明示的に設定します。すなわち

mrec.setAudioSamplingRate(samplingRate);

両方を試しましたが、サンプルレートの効果は、オーディオ録音中にのみ見られ、mediaRecorder クラスを介して録音中には見ら​​れません。両者の違いは何なのか理解できません。

4

1 に答える 1

3

Android SDK ドキュメントのように、MediaRecordはオーディオとビデオの記録に使用されます。記録制御は単純なステート マシンに基づいています。生のオーディオ データにアクセスして処理する必要がない限り(独自の DSP エフェクトを適用するなど)、常に MediaRecord を使用してサウンドを録音します。このシナリオでは、 AudioRecord. setAudioSamplingRateofMediaRecordは、に渡すのと同じことSampleRateInHzを行いますAudioRecord、希望のサンプリング レートを設定します。サンプリング レートが高いほど、より良い音質と周波数範囲が得られます。理想的な人間の耳は、20 ~ 20000 Hz の音を聞くことができます。サンプリング レートを 4100 Hz に設定すると、周波数応答は次のようになります。ほぼ 20000hz である 4100/2 まで。ただし、デバイスによってサポートされる周波数範囲は異なります。デバイスが目的の周波数をサポートしているかどうかを常に確認する必要があります。

特定の頻度が機能するかどうかを確認するには、次のコードを使用できます。

    int bufferSize = AudioRecord.getMinBufferSize(rate[i],AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);

bufferSize 値が 0 より大きい場合は、指定した頻度がデバイスでサポートされています。

于 2013-05-03T08:30:24.543 に答える