录制/播放声音时音质不佳 - Android SDK

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了录制/播放声音时音质不佳 - Android SDK相关的知识,希望对你有一定的参考价值。

当我尝试录制然后播放刚刚录制的文件时,我遇到了问题。我可以录制和播放声音,但质量很糟糕。它不仅是坏的,真的很难听,听起来有点像计算机生成的声音。我使用andriod SDK-emulator。设置录音的代码如下所示;

MediaRecorder recorder = new MediaRecorder();
recorder.setAudiosource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();

以后播放文件的代码看起来像这样;

MediaPlayer mp = new MediaPlayer();
mp.reset();
mp.setDataSource(path);
mp.prepare();
mp.start();

我不知道是什么部分使音频文件听起来非常糟糕,或者它只是模拟器使它变坏并且它可以在真正的手机上工作。

答案

您正在谈论两种不同的Object,AudioRecorder和MediaRecorder。

另一答案

试试这些

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);   
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);     
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);   
recorder.setAudioChannels(2);
recorder.setAudioEncodingBitRate(128);
recorder.setAudioSamplingRate(44100);

如果您在低端android设备上发现此代码崩溃,请尝试删除setAudioChannels和setAudioSamplingRate。

另一答案

它不仅仅是模拟器;在我的Nexus 10上听起来也不错。

与Mohit marwal的答案类似,您可以设置采样率和比特率。 44100是标准的CD质量采样率。大多数商业音频下载的编码速率至少为每秒128000比特(不是每秒千比特,如Mohit的回答所示)。那些将是良好的起始价值。此外,您应该只使用一个通道,将文件大小减半,除非您有立体声麦克风并且需要以立体声录制。

recorder.setAudioChannels(1);
recorder.setAudioEncodingBitRate(128000);
recorder.setAudioSamplingRate(44100);

当我设置这些值时,文件大小和质量都会增加,但仍然没有达到我想要的水平。可能剩余的噪音来自我设备上的麦克风,但我没有使用外接麦克风进行测试或比较其他设备。

另一答案

AudioRecord采取了各种会影响录音质量的论据。

尝试在构造函数中设置这些:

  • 音频来源:MIC
  • 采样率:16000
  • 频道数:CHANNEL_CONFIGURATION_MONO
  • 格式:ENCODING_PCM_16BIT
  • 缓冲区大小:16000 * 30(30秒缓冲区)

代码示例:

recorder = new AudioRecord(
                          MediaRecorder.AudioSource.MIC,
                          16000,
                          AudioFormat.CHANNEL_CONFIGURATION_MONO,
                          AudioFormat.ENCODING_PCM_16BIT,
                          16000*30);

以上是关于录制/播放声音时音质不佳 - Android SDK的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 应用中录制声音

影视剧中的歌曲怎么录制 怎么录背景音乐

在android中播放时录制声音并改变音高?

如何录制电脑内部声音 视频中的音频怎么录制

Android:同时录制视频和播放 mp3?

在android中将录制的声音调制成不同的效果?