通话录音文件中对方语音音量过低问题及相关录音代码咨询
解决通话录音中对方语音音量极低的问题
嘿,看了你的代码片段,我立刻发现几个可能导致对方语音音量极低的关键点,咱们一步步来解决:
首先,最核心的问题是音频源选择错误。你用了MediaRecorder.AudioSource.DEFAULT,这个默认源根本不是为通话场景设计的,它没法很好地捕获通话里的远端(对方)语音。Android专门提供了针对通话的音频源,赶紧换掉:
- 优先用
VOICE_CALL:这是系统专门为通话录音打造的音频源,能同时捕获你和对方的声音,效果最理想。修改这一行代码:
如果某些设备因为厂商限制不让用这个(比如部分国产手机),就换成mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);VOICE_COMMUNICATION——这个是为VoIP通话优化的,兼容性更强:mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
然后,我发现你代码里有个明显的错误:输出格式和编码器搞混了!你写的mediaRecorder.setOutputFormat(MediaRecorder.AudioEncoder.AMR_NB)完全不对,setOutputFormat要传输出格式常量,编码器得用setAudioEncoder来设置。这错误会直接导致录音异常,要么音量低要么文件损坏,赶紧改成正确的写法:
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
接下来,检查权限是否到位:
- 确保你已经在Manifest里声明了
RECORD_AUDIO权限; - Android 10及以上,还需要动态申请
RECORD_AUDIO和READ_PHONE_STATE(针对通话场景); - Android 11+可能还要
POST_NOTIFICATIONS权限,没有这些权限,音频源根本没法正常工作。
最后提个兼容性小技巧:不同厂商的设备对通话音频源支持不一样,如果VOICE_CALL不好使,就 fallback 到VOICE_COMMUNICATION。要是实在不行,也可以试试后期对音频文件做增益处理,但这是下策,优先解决源头问题。
你可以先改音频源和修正格式/编码器的错误,测试下效果,应该能解决大部分音量低的问题。
内容的提问来源于stack exchange,提问作者Mithun Halmare
相关产品推荐
相关产品推荐

