我希望有人可以帮我解决这个问题.
前段时间我开发了一个应用程序,以便同时录制前置麦克风和后置麦克风在智能手机中捕获的声音.基本上,我做下一个这样的对象:
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.CAMCORDER, frequency, AudioFormat.CHANNEL_IN_STEREO, audio encoding, buffer size);
它适用于索尼Xperia Neo V,但不适用于摩托罗拉Moto G(或者我认为是Moto X).看一下我在CAMCORDER标志下看到的文档:
Microphone audio source with same orientation as camera if available, the main device microphone otherwise.
摩托罗拉Moto G没有相机麦克风,但顶部有一个(索尼Xperia后面有一个麦克风或相机麦克风).事实上,有了Moto G,我得到了两次相同的信号(由前麦克风捕获的信号)两次,这根据文档是正确的.
有谁能够帮我?
解决方法:
我有同样的问题,我使用48000赫兹的采样率让它工作.我认为它可以工作,因为使用默认相机应用程序制作的视频录制工作立体声并具有此采样率.使用函数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);
我正在使用Moto G,安装了KitKat.