Very poor sound quality recorded on my droid using MediaRecorder, why?

My project requires me to be able to record audio on an Android device. I implemented the solution using MediaRecorder (), but the recorded sound is in terrible quality. What am I doing wrong? I should think that this may not be the only way to record sound :) Maybe I am doing something wrong, I am including my code below. Please point me in the right direction.

thank!

MediaRecorder recorder = new MediaRecorder();
File outputFile = new File(Environment.getExternalStorageDirectory(), "audio.3gp");
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(outputFile.getAbsolutePath());
recorder.prepare();
recorder.start();
// stop
recorder.stop();
recorder.reset(); 
recorder.release();
+6
source share
5 answers

AMR_NB stinks.

Set the bitrate to 16 and the sampling rate to 44100.

3gpp usually stinks, try using AAC / MPEG_4 instead.

Try it and update us.

+8

:

MediaRecorder recorder = new MediaRecorder();
File outputFile = new File(Environment.getExternalStorageDirectory(), "audio.3gp");
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(outputFile.getAbsolutePath());
recorder.prepare();
recorder.start();

, . , RehearsalAudioRecord OpenSource

http://rehearsalassist.svn.sourceforge.net/viewvc/rehearsalassist/android/releases/RehearsalAssistant_0_8_2/src/urbanstew/RehearsalAssistant/

. MediaRecorder :

RehearsalAudioRecorder recorder = new RehearsalAudioRecorder(RehearsalAudioRecorder.RECORDING_UNCOMPRESSED, MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT);
recorder.setOutputFile(outputFile.getAbsolutePath());
recorder.prepare();
recorder.start();

WAVE , , , . ,

+9

, , , 16. 16 - , , . /, MediaRecorder.setAudioEncodingBitRate() / ( , "k"). :

MediaRecorder recorder = new MediaRecorder();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(...);
recorder.setAudioEncoder(...);

final int bitDepth = 16;
final int sampleRate = 44100;
final int bitRate = sampleRate * bitDepth;

recorder.setAudioEncodingBitRate(bitRate);
recorder.setAudioSamplingRate(sampleRate);

recorder.setOutputFile(...);

recorder.prepare();
recorder.start();
// stop
recorder.stop();
recorder.reset(); 
recorder.release();

, (), ( ), ( , MediaRecorder.setSamplingRate() ) ( /). , ; .

@StarPinkER, @PrvN, @arlomedia SO .

+7

.

There are methods for the MediaRecord object that you can change - the Android MediaRecorder object

void     setAudioEncoder(int audio_encoder)
    Sets the audio encoder to be used for recording.
void     setAudioEncodingBitRate(int bitRate)
    Sets the audio encoding bit rate for recording.
void     setAudioSamplingRate(int samplingRate)
    Sets the audio sampling rate for recording.

Try changing them and see if any change in sound quality helps.

0
source

I used the following settings and got very good audio results.

recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); recorder.setAudioEncodingBitRate(128000); recorder.setAudioSamplingRate(96000);

0
source

All Articles