如何在Android中录制质量更好的音频文件?

我正在创建一个应用程序,它将Android上的录制文件播放到iphone,反之亦然.

现在我在用,

        audioRecorder = new MediaRecorder();
        audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

使用此代码记录的文件大小为85 kb / 15秒,质量非常差.

如果我使用,

        audioRecorder = new MediaRecorder();
        audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
        audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

然后文件大小是25kb / 15秒,质量比aac好得多.
但问题是AMR在iPhone中无法播放.

所以请建议Android的录制架构具有更好的质量,实惠的尺寸,也可以在iPhone上播放.

解决方法:

如果要更改质量,请增加recorder.setAudioEncodingBitRate(value).

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax());
recorder.setAudioEncodingBitRate(16);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start(); 

编辑:

另一种选择是在您的应用中添加转换器.将AMR转换为AAC.

上一篇:使用Android NDK时是否可以使用本地AAC解码器?


下一篇:如何以编程方式将两个aac文件合并为一个?