Я провел большое исследование и не смог найти много информации об этом. Я хочу записывать аудиосэмплы с помощью Android AudioRecorder, но я не знаю, как это сделать в 32-битном формате. Я также использую AudioTrack для «мониторинга» микрофона и прослушивания звука во время записи, но если я установлю AudioManager и AudioTrack на ENCODING_PCM_FLOAT
, то звук в буквальном смысле будет нулевым, я не смогу ничего слушать.
Таким образом, вопрос заключается в том, как записывать и слушать одновременно с AudioFormat.ENCODING_PCM_FLOAT
в 32-битных сэмплах, чтобы я мог получить звук наилучшего качества.
Это быстрый взгляд на то, как я инициализирую AudioRecord, используя AXET Audio Library :
final AudioRecord recorder = Sound.createAudioRecorder(context, sampleRate, ss, 0);
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
final int maxJitter = AudioTrack.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
audioTrack = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION,sampleRate,AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_FLOAT,maxJitter, AudioTrack.MODE_STREAM);
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
Внутри потока я просто записываю буфер в audioTrack:
audioTrack.write(buffer,0,bufferSize);
Мой буфер - это короткий массив [].
Наконец-то я запускаю thread и проигрываю трек, как я уже говорил в PCM_16BIT отлично работает, но в PCM_FLOAT нет:
thread.start();
audioTrack.play();
Так что, если у кого-то есть опыт записи в 32-битном формате, я был бы признателен, если бы знал, как это делается. Благодаря.