Android MediaRecorder - SetAudioEncodingBitRate - HowTo [重复]

Posted

技术标签:

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

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

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

有人知道怎么做吗

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

非常感谢任何帮助。

【问题讨论】:

有一个类似的问题可以参考这个:https://***.com/questions/1437888/improve-android-audio-recording-quality 感谢您的快速回答,但我还是不明白。 RingDroid 应用程序使用低质量的 MediaRecorder。并且 RehearsalAssistent 不会压缩流。我在这里错过了什么吗? 坦率地说,我真的没有尝试过这些。我刚刚遇到了类似的问题。 所以伙计们,我找到了解决方案:setAudioEncodingBitrate 从 2.2 开始工作。我用的是 2.1 愚蠢的我! 【参考方案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 左右的值可以提供更好的质量

以上是关于Android MediaRecorder - SetAudioEncodingBitRate - HowTo [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MediaRecorder和AudioRecord的区别和联系

Android MediaRecorder解析

Android 10 源码MediaRecorder 录像流程:MediaRecorder 配置

Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events(

Android-MediaRecorder录像机(视频)

使用MediaRecorder录制音频