【问题标题】:Android MediaRecorder - SetAudioEncodingBitRate - HowTo [duplicate]Android MediaRecorder - SetAudioEncodingBitRate - HowTo [重复]
【发布时间】:2010-12-26 14:20:23
【问题描述】:

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

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

有人知道怎么做吗

  • 提高 AudioRecorder 文件的质量或
  • 即时压缩 pcm(如 mp3 或其他)。

非常感谢任何帮助。

【问题讨论】:

  • 感谢您的快速回答,但我还是不明白。 RingDroid 应用程序使用低质量的 MediaRecorder。并且 RehearsalAssistent 不会压缩流。我在这里错过了什么吗?
  • 坦率地说,我真的没有尝试过这些。我刚刚遇到了类似的问题。
  • 所以伙计们,我找到了解决方案:setAudioEncodingBitrate 从 2.2 开始工作。我用的是 2.1 愚蠢的我!

标签: android audio mediarecorder


【解决方案1】:

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

这是我最近用来录制音频的一个 sn-p 代码,还为您设置了 catches。

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();
    }
}

显然,您需要调用 recorder.stop 并在必要时释放它。

 private void stopRecording() {
    if (null != recorder) {
        recorder.stop();
        recorder.reset();
        recorder.release();
        recorder = null;
    }
}

我仍然觉得质量有改进的余地,所以它只是一个正在进行的工作。 希望对您有所帮助!

【讨论】:

  • 您将比特率设置得太低。也许 96000 左右的值可以提供更好的质量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多