2017-01-23 4 views
2

Я пытаюсь записать аудио с микрофона с помощью AudioRecord. Запись работает, но громкость звучит громко, и я получаю ужасную обрезку. Я попытался использовать AutomaticGainControl, но он недоступен на моем устройстве. Есть ли другой способ уменьшить громкость автоматически или вручную?Android AudioRecord clipping

Это код, я использую:

sampleRate = 44100 
channel = AudioFormat.CHANNEL_IN_MONO 
encoding = AudioFormat.ENCODING_PCM_16BIT 

audioRecord =new AudioRecord(MediaRecorder.AudioSource.DEFAULT, //also tried VOICE_RECOGNITION 
      sampleRate, channel, encoding, 
      bufferSize) 

audioRecord.startRecording() 

ответ

1

Оказывается, что я слышал не был отсечения вызван объемом, но неправильным порядком байт. Клип был записан с little-endian, и я воспроизводил его с помощью big-endian. Из-за того, что более низкие значения объема были просто усилены и в остальном не затронуты, поскольку самые значащие биты были равны 0, но когда объем был выше, MSB не был 0, а общее значение исказилось до белого шума.

Смежные вопросы