我希望有人可以帮我解决这个问题。
前段时间我开发了一个应用程序,以便同时录制前置麦克风和后置麦克风在智能手机中捕获的声音。基本上,我制作下一个这样的对象:
AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.CAMCORDER ,频率, AudioFormat.CHANNEL_IN_STEREO ,音频编码,缓冲区大小);
它非常适合索尼Xperia Neo V,但不适用于摩托罗拉Moto G(或者我认为是Moto X)。看一下我在CAMCORDER标志下看到的文档:
与相机方向相同的麦克风音频源(如果可用),否则为主设备麦克风。
摩托罗拉Moto G没有相机麦克风,但顶部有一个(索尼Xperia后面有一个麦克风或相机麦克风)。事实上,使用Moto G,我获得了相同的信号(前麦克风捕获的信号)两次,根据文档记录是正确的。
有人能帮助我吗?
答案 0 :(得分:2)
我遇到了同样的问题,我使用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);
我正在使用安装了KitKat的Moto G。