2013-06-24 3 views
1

Мне нужно записывать с частотой дискретизации не менее 44,1 кГц. Я тестировал следующий код на своем новом устройстве (Android 4.1.2), и записанный звук будет иметь разные частоты дискретизации, основанные на моем вводе. Однако, когда я использую свое старое устройство (Android 2.3.4), независимо от выбранной частоты дискретизации, он всегда возвращает файл с частотой 8 кГц.setAudioSamplingRate не работает для более старого устройства (Android 2.3.4)

Оба формата вывода и аудиокодер являются уровнем API 10, который ниже уровня моего старого устройства. Я не могу понять, что мое старое устройство (Droid X) может иметь аппаратное обеспечение, которое поддерживает только частоту дискретизации звука 8 кГц, поэтому я предполагаю, что должен быть другой способ обеспечить требуемую частоту дискретизации.

private void startRecording() { 

      mRecorder = new MediaRecorder(); 
      mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
      mRecorder.setOutputFile(mFileName); 
      mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
      mRecorder.setAudioSamplingRate(44100); 


      try { 
       mRecorder.prepare(); 
      } catch (IOException e) { 
       Log.e(LOG_TAG, "prepare() failed"); 
      } 

      mRecorder.start(); 
     } 
+0

Вы уверены, что IOException не выбрасывается? (I.e., вы проверили свой логарифм?) –

+0

Спасибо за быстрый ответ. В моем logcat нет IOException, и мое приложение работает нормально - оно записывается на mp4, но записанный файл всегда 8 кГц. В стороне я обнаружил, что мой старый телефон может записывать более высокую скорость, чем 8 кГц, но я не знаю, как сделать это с моим приложением. Я знаю это, потому что я создал линейный чирп, который идет до 6 кГц, и при записи с моей камерой нет искажения сигнала, пока есть текущая настройка. –

+0

Хм. Единственная другая мысль, которую я могу предложить прямо сейчас, - проверить, что каждый раз создается новый звуковой файл, т. Е. Вы не смотрите на более старые результаты. –

ответ

1

Установите OutputFormat на:

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS); 

Тогда N попробовать. Это будет работать.

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

  • Нет связанных вопросов^_^