Запись стереозвука с помощью Motorola Moto G (или Moto X)

Я надеюсь, что кто-то может помочь мне с этим вопросом.

Некоторое время назад я разработал приложение для одновременной записи звука, снятого передним и задним микрофоном в смартфоне. По сути, я делаю следующий объект следующим образом:

AudioRecord audioRecord = новый AudioRecord (MediaRecorder.AudioSource.CAMCORDER, частота, AudioFormat.CHANNEL_IN_STEREO, кодирование звука, размер буфера);

Он отлично работал для Sony Xperia Neo V, но не для Motorola Moto G (или Moto X I думаю). Взглянув на документацию, я увидел следующее для флага CAMCORDER:

Источник звука микрофона с той же ориентацией, что и у камеры, если имеется, в противном случае микрофон основного устройства.

У Motorola Moto G нет микрофона для камеры, но один сверху (у Sony Xperia один микрофон сзади или микрофон для камеры). Фактически, с Moto GI получал один и тот же сигнал (тот, который захватывал передний микрофон) дважды, что является правильным согласно документации.

Кто-нибудь может мне помочь?

1 ответ

У меня была такая же проблема, и я заставил ее работать, используя частоту дискретизации 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.

Другие вопросы по тегам