7

録音してから、録音したばかりのファイルを再生しようとすると、問題が発生します。音の録音と再生はできますが、品質が悪いです。悪いだけでなく、コンピューターで生成された音声のように聞こえます。私は android SDK エミュレーターを使用しています。記録を設定するコードは次のようになります。

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();

後でファイルを再生するコードは次のようになります。

MediaPlayer mp = new MediaPlayer();
mp.reset();
mp.setDataSource(path);
mp.prepare();
mp.start();

オーディオ ファイルのサウンドが本当に悪いのはどの部分なのか、それともエミュレータだけが悪いのか、実際の電話で動作するのかはわかりません。

4

4 に答える 4

5

これらを試してください

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);   
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);     
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);   
recorder.setAudioChannels(2);
recorder.setAudioEncodingBitRate(128);
recorder.setAudioSamplingRate(44100);

このコードがローエンドの Android デバイスでクラッシュする場合は、setAudioChannels と setAudioSamplingRate を削除してみてください。

于 2012-04-30T10:11:09.840 に答える
1

あなたは、AudioRecorder と MediaRecorder という 2 つの異なるオブジェクトについて話しています。

于 2010-11-16T11:37:11.133 に答える
0

AudioRecord録音品質に影響を与えるさまざまな議論を取ります。

コンストラクターでこれらを設定してみてください。

  • オーディオソース:MIC
  • サンプルレート:16000
  • チャネル数:CHANNEL_CONFIGURATION_MONO
  • フォーマット:ENCODING_PCM_16BIT
  • バッファサイズ:16000 * 30(30秒バッファ)

コード例:

recorder = new AudioRecord(
                          MediaRecorder.AudioSource.MIC,
                          16000,
                          AudioFormat.CHANNEL_CONFIGURATION_MONO,
                          AudioFormat.ENCODING_PCM_16BIT,
                          16000*30);
于 2010-10-17T21:38:08.693 に答える