在安卓设备上提高音频录制质量?

3

我正在安卓平台使用 MediaRecorder 进行音频录制。但是录制出来的音频质量很差。我检查了 iPhone 的录音效果,非常好,但在安卓上,我却获得了可怕的声音。

关于录音,我使用的是:

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

如何提高音频录制质量?


你有找到任何解决方案吗?音频质量有改善吗? - curiousMind
2个回答

7
尝试这个 -
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax());
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start(); 

我已经尝试过了,现在又出现了另一个问题...它没有记录声音。 - Nikunj Patel
嗨!现在它正在工作,现在它可以播放,但没有任何区别。那么我该如何提高声音质量? - Nikunj Patel
我尝试了这个 recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax()); 但是它给了我 IllegalStateException(无效的音频编码器),你能告诉我如何提高声音质量和播放质量吗? - Himanshu Agarwal
recorder.setAudioEncodingBitRate(16); 这会将比特率设置为每秒16位,这非常糟糕。 - James Goodwin
3
为了澄清,你应该使用类似于 recorder.setAudioEncodingBitRate(16 * 44100); 的方式,而不是使用数字16。16 可能是比特深度,但对于比特率来说太低了。 - Grant
显示剩余8条评论

0
Android主要支持3种声音格式(从创建的角度来看):3gp,mp4和amr。实际上,所有这些质量都非常差,所以对此无能为力。
不过,您仍然可以使用外部的mp3编解码器或将其保存为wav文件。声音会更加清晰,但是与上述三种格式相比,这样一个编解码器(wav)将需要更大的音频文件。

1
我不同意你的观点,因为在编程世界中,这是可能的。 - Nikunj Patel
我想知道如何。 - Jviaches
正如SpK所说……我仍然对他的回答不满意,我会尝试更多的探索…… - Nikunj Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接