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 10 源码MediaRecorder 录像流程:MediaRecorder 配置
Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events(