You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android MediaRecorder无法修改音频通道数,始终输出单声道求助

问题:MediaRecorder设置双声道无效,始终输出单声道

我在开发一款应用时,按以下方式配置MediaRecorder:

mediaRecorder.setAudioSource(AudioSource.MIC);
mediaRecorder.setVideoSource(VideoSource.SURFACE);
CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
cpHigh.audioChannels = 2; 
mediaRecorder.setProfile(cpHigh);
mediaRecorder.setVideoSize(specifiedWidth, specifiedHeight);
mediaRecorder.setOutputFile(videoFilename);
try {
  mediaRecorder.prepare();
} catch (Exception e) {
  ...
}

尽管设置了cpHigh.audioChannels = 2;,但保存的文件仍为单声道。改用mediaRecorder.setAudioChannels(2);后依旧无效,始终输出单声道,请问这是什么原因?


可能的原因及解决思路
  • 设备硬件限制:多数安卓设备的内置麦克风本身就是单声道硬件,不管代码里怎么设置双声道,硬件无法提供立体声输入,最终输出自然还是单声道。可以先拿系统自带录音APP测试,看设备本身是否支持立体声录制。

  • CamcorderProfile的覆盖逻辑:CamcorderProfile.get()返回的是设备预设的支持配置,手动修改audioChannels大概率不生效——setProfile()方法会优先套用设备实际支持的音频参数,直接覆盖你的修改。另外setAudioChannels()必须在setProfile()之前调用才有可能生效,因为setProfile()会重置所有音频相关配置。

  • 编码格式不支持立体声:部分老旧设备的默认音频编码(比如AMR-NB)本身不支持双声道,即便设置了通道数,编码器也会自动降级为单声道。可以检查cpHigh.audioCodec对应的编码格式,尝试切换到AAC这类支持立体声的编码格式。

  • 音频源的限制:AudioSource.MIC在部分设备上被系统限制为单声道输入,哪怕硬件是立体声的,系统音频源配置也会锁死通道数。可以尝试替换为AudioSource.DEFAULT,或者查看设备的音频源权限配置是否允许立体声输入。

内容的提问来源于stack exchange,提问作者Matin Kh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:10:26