Android MediaRecorder-SetAudioEncodingBitRate-HowTo

Android MediaRecorder-SetAudioEncodingBitRate-HowTo,android,audio,mediarecorder,Android,Audio,Mediarecorder,我试着用安卓系统录制音频。使用MediaRecorder的声音质量真糟糕。有没有办法提高质量?文档中说,应该有类似“setAudioEncodingBitRate”的东西,但我还没有找到实现它的方法 然后我尝试使用AudioRecord函数将声音写入流。质量很好,但pcm文件太大,因为我想将它们上载到远程服务器 有人知道怎么做吗 提高录音机文件的质量或 动态压缩pcm(如mp3或其他) 非常感谢您的帮助 是的,您可以使用录音机更改一些内容,以提高音质。即比特率/采样率和音频编码器本身 下面是

我试着用安卓系统录制音频。使用MediaRecorder的声音质量真糟糕。有没有办法提高质量?文档中说,应该有类似“setAudioEncodingBitRate”的东西,但我还没有找到实现它的方法

然后我尝试使用AudioRecord函数将声音写入流。质量很好,但pcm文件太大,因为我想将它们上载到远程服务器

有人知道怎么做吗

  • 提高录音机文件的质量或
  • 动态压缩pcm(如mp3或其他)

非常感谢您的帮助

是的,您可以使用录音机更改一些内容,以提高音质。即比特率/采样率和音频编码器本身

下面是一段代码,我最近一直在使用它来录制音频,还为您提供了捕获设置

private void startRecording() {
    recorder = new MediaRecorder();

    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(getFilename());
    recorder.setOnErrorListener(errorListener);
    recorder.setOnInfoListener(infoListener);

    try {
        recorder.prepare();
        recorder.start();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
显然,您需要呼叫录音机。必要时停止并释放录音机

 private void stopRecording() {
    if (null != recorder) {
        recorder.stop();
        recorder.reset();
        recorder.release();
        recorder = null;
    }
}
我仍然觉得在质量上还有改进的余地,所以这只是一项正在进行的工作。
希望有帮助

您已将比特率设置得太低。也许96000左右的值可以提供更好的质量这里有一个类似的问题,你可以参考这个:谢谢你的快速回答,但我还是不明白。RingDroid应用程序使用低质量的MediaRecorder。排练助手不会压缩流。我是不是错过了什么?坦白说,我真的没试过。我刚刚遇到了类似的问题。所以伙计们,我找到了解决方案:setAudioEncodingBitrate从2.2开始工作。我用的是2.1愚蠢的我!