2011-02-10 23 views
6

Ciągle pojawia się ten błąd podczas próby zainicjowania i obiektu AudioRecord, próbując nagrać dźwięki za pomocą emulatora za pomocą Eclipse."Nie można uzyskać wejścia audio dla źródła zapisu 1" podczas próby zainicjowania AudioRecord

Próbowałem z różnymi prędkościami próbkowania bitów, tylko 8000 jest poprawne, ale błąd nadal występuje. Próbowałem na różnych wersjach sdk, 1.5, 1.6, 2, 2.2 i 2.3.1. (i kombinacje z AVD).

Oto kod:

 Log.v(TAG, "About to initialize recording"); 
    //int[] samplingRates = {44100, 22050, 16000, 11025, 8000}; 
    int[] samplingRates = {8000}; 

    for (int i = 0; i < samplingRates.length; ++i) 
    { 
     try 
     { 
      Log.d(TAG,"Trying sampling rate: " + samplingRates[i]); 
      int min = AudioRecord.getMinBufferSize(samplingRates[i], 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        //AudioFormat.CHANNEL_IN_MONO, 
        AudioFormat.ENCODING_PCM_16BIT); 
      Log.d(TAG,"MinBufferSize: " + min); 

      AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.MIC, samplingRates[i], 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, min); 
      if (record.getState() == AudioRecord.STATE_INITIALIZED) 
      { 
       Log.d("Recorder", "Audio recorder initialised at " + record.getSampleRate()); 
       return record; 
      } 
      record.release(); 
      record = null; 
     } 
     catch (IllegalArgumentException e) 
     { 
      // Try the next one. 
      Log.d(TAG,"Initialization failed"); 
     } 
    } 
    // None worked. 
    return null; 

Błąd występuje na konkretyzacji, rekord AudioRecord = new itp

Czy ktoś widział ten sam problem, wydaje się być prosta prośba tak I' Jestem zaskoczony, jeśli to błąd, zwłaszcza, że ​​nie mogę go uruchomić z różnymi wersjami.

Stworzyłem AVD z funkcjami zapisu audio. Czy jest jeszcze coś, co muszę skonfigurować?

Widziałem kilka innych postów dotyczących tego samego problemu, ale nie otrzymałem odpowiedzi.

góry dzięki

Chris

+0

Tak to jest możliwe ... Chk ten post http://stackoverflow.com/ q/5254994/87918 –

Odpowiedz

2

Jesteś tu problem jest chyba rzeczywiście dwojaka. Po pierwsze, musisz uzyskać wszystkie parametry w porządku dla AudioRecord, tzn. Widzę, że wypróbowałeś wszystkie różne częstotliwości próbkowania i konfiguracje kanałów, ale czy próbowałeś różnych głębokości bitowych? Jeśli nie wszystko jest w porządku, nie działa. Ponadto wydaje się, że niektóre urządzenia z systemem Android wydają się zgłosić niewłaściwą minBufferSize.

Ale myślę, że rzeczywisty problem doświadczasz jest to, że AVDs nie można nagrywać audio/video (choć nie mogą narzekać, jeśli go skonfigurować tak): http://developer.android.com/guide/topics/media/index.html

Z ust trzeci:

Należy pamiętać, że emulator nie ma sprzętu do przechwytywania audio lub wideo, ale rzeczywiste urządzenia mobilne prawdopodobnie zapewnią takie możliwości, dostępne za pośrednictwem klasy MediaRecorder.

0

dla mnie na Samsung Device, to praca z tylko zmiana AudioFormat.CHANNEL_IN_MONO

lub

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize); 
Powiązane problemy