我希望有人能帮助我解决这个问题。

前段时间我开发了一个应用程序,以便在智能手机中同时录制前麦克风和后麦克风捕获的声音。基本上,我制作下一个对象是这样的:



它非常适用于 Sony Xperia Neo V,但不适用于摩托罗拉 Moto G(或我猜的 Moto X)。看一看文档,我看到了下一个 CAMCORDER 标志:



摩托罗拉 Moto G 没有摄像头麦克风,但顶部有一个(索尼 Xperia 背面有一个麦克风或摄像头麦克风)。事实上,使用 Moto G 我两次获得相同的信号(前置麦克风捕获的信号),根据文档,这是正确的。

有谁能够帮我?

最佳答案

我遇到了同样的问题,我使用 48000 Hz 的采样率让它工作。我认为它会起作用,因为使用默认相机应用程序制作的视频录制在立体声中并具有此采样率。使用函数 getMinBufferSize() 时也必须考虑这个频率。

这是我的设置:

private static final int RECORDER_BPP = 16;
private static final int RECORDER_SAMPLERATE = 48000;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_STEREO;
private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;

然后我创建 AudioRecord 对象:
recorder = new AudioRecord(MediaRecorder.AudioSource.CAMCORDER,
                                            RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);

我正在使用安装了 KitKat 的 Moto G。

10-07 20:41