<AudioRecord> "No se pudo obtener la entrada de audio para la fuente de grabación 1"
He estado teniendo este problema con la inicialización de AudioRecord
para Android. He buscado durante bastante tiempo en la web sin éxito.
Para el teléfono, estoy usando un Samsung GalaxyS en SDK versión 7. Para la inicialización de AudioRecord
, estoy usando 8000 como la tasa de muestreo, MONO para configuración de canal, 16bit para formato de audio, y de acuerdo con el registro, el minBufferSize es Set to 4160. He añadido el permiso AUDIO_RECORD al manifiesto.
- ¿Cómo evitar el control automático de ganancia con AudioRecord?
- ¿Cómo puedo pausar la grabación de voz en Android?
- ¿Cómo saber si un MediaRecorder está en estado de ejecución o no?
- MediaRecorder se bloquea cuando graba un segundo clip de audio
- Cómo reproducir AudioRecord con un poco de retraso
Mi código para la inicialización es como sigue:
... private static int SAMPLE_RATE = 8000; private static int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO; private static int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; // ??? Both 8Bit and Default are deemed illegal. public MicVolumeManager() { this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT); PhoneDebugger.debug("AUDIO-BUFFER-SIZE", Integer.toString(this.bufferSize)); this.recorder = new AudioRecord(AudioSource.MIC, SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, this.bufferSize); this.audioBuffer = new byte[this.bufferSize]; } ...
Sin embargo, el objeto (this.recorder) no se pudo inicializar. Lo siguiente es del registro usando DDMS:
AUDIO-BUFFER-SIZE (3253): 4160
AudioRecord (3253): set (): sampleRate 8000, canales 16, frameCount 2080
AudioPolicyManager (2175): getInput () inputSource 1, samplingRate 8000, formato 1, canales 10, acústica 0
AudioFlinger (2175): openInput () openInputStream devuelto entrada 0x0, SamplingRate 8000, Formato 1, Canales 10, acústica 0, estado -17
AudioRecord (3253): No se pudo obtener la entrada de audio para la fuente de grabación 1
AudioRecord-JNI (3253): Error al crear la instancia de AudioRecord : error de verificación de inicialización.
AudioRecord-Java (3253): [android.media.AudioRecord] Código de error -20 al inicializar el objeto AudioRecord nativo.
Cualquier ayuda por favor? ¡Muchas gracias!
- Android AudioRecord artefacto
- Grabación de audio en vivo y reproducción en Android y manejo de subprocesos y devolución de llamada
- Android: Fusionar / concatenar dos archivos de audio cuelga la aplicación
- La clase MediaRecorder comienza a grabar audio después de un ligero retraso
- Habilitar MIC en genymotion / Cualquier otro buen emulador de Android
- Demora en la transmisión de audio
- AudioRecord con ajuste de ganancia no funciona en el dispositivo Samsung
- Advertencia: File.mkdir () se ignora
Para mí, la causa fue el fracaso de llamar a AudioRecord.release () para una instancia anterior de AudioRecord; Ató recursos nativos en AudioFlinger e interferió con instancias subsecuentes de AudioRecord. Lo vi en un Samsung Fascinate (Galaxy S) Android 2.1 (Eclair); Ya sea el Eclair o la aplicación de Samsung puede ser particularmente intolerante.
Tuve el mismo error, hasta que reinició el dispositivo.
Parece que en mi Galaxy S el impl nativo es buggy: varias veces la adquisición y liberación de un AudioRecorder
(durante el tiempo de actividad del teléfono entero) causa ese error.
Después de usar el grabador de audio, debe detenerlo y soltarlo. Entonces, cuando init el grabador de audio la próxima vez, está bien.
Hola He tenido el mismo problema al intentar inicializar un objeto AudioRecord y la solución que he encontrado fue probar el parámetro configurtion antes de intentar instanciar el objeto AudioRecord actual. Aquí está la ruina que he usado:
/** * Scan for the best configuration parameter for AudioRecord object on this device. * Constants value are the audio source, the encoding and the number of channels. * That means were are actually looking for the fitting sample rate and the minimum * buffer size. Once both values have been determined, the corresponding program * variable are initialized (audioSource, sampleRate, channelConfig, audioFormat) * For each tested sample rate we request the minimum allowed buffer size. Testing the * return value let us know if the configuration parameter are good to go on this * device or not. * * This should be called in at start of the application in onCreate(). * * */ public void initRecorderParameters(int[] sampleRates){ for (int i = 0; i < sampleRates.length; ++i){ try { Log.i(TAG, "Indexing "+sampleRates[i]+"Hz Sample Rate"); int tmpBufferSize = AudioRecord.getMinBufferSize(sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); // Test the minimum allowed buffer size with this configuration on this device. if(tmpBufferSize != AudioRecord.ERROR_BAD_VALUE){ // Seems like we have ourself the optimum AudioRecord parameter for this device. AudioRecord tmpRecoder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRates[i], AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, tmpBufferSize); // Test if an AudioRecord instance can be initialized with the given parameters. if(tmpRecoder.getState() == AudioRecord.STATE_INITIALIZED){ String configResume = "initRecorderParameters(sRates) has found recorder settings supported by the device:" + "\nSource = MICROPHONE" + "\nsRate = "+sampleRates[i]+"Hz" + "\nChannel = MONO" + "\nEncoding = 16BIT"; Log.i(TAG, configResume); //+++Release temporary recorder resources and leave. tmpRecoder.release(); tmpRecoder = null; return; } }else{ Log.w(TAG, "Incorrect buffer size. Continue sweeping Sampling Rate..."); } } catch (IllegalArgumentException e) { Log.e(TAG, "The "+sampleRates[i]+"Hz Sampling Rate is not supported on this device"); } } }
Puedo esta ayuda.
Dickwan
Esto también está afectando a las pestañas de la galaxia Sansung GT-P1000 y posteriores 10.1 uno
Este error es bastante difícil de reproducir y un reinicio es la única manera que encontré para escapar de este mal estado …
¿Hay un seguidor de bugs a seguir en samsung?
Si usted no tomó el permiso de Record_Audio entonces lo toma incluso que usted que consigue error entonces apaga su móvil que enciende de nuevo entonces funciona su app.
Creo que el hardware de audio no puede soportar hasta 10 canales, que se establece como entrada, así que trate de usar 2 canales, y ver si puede funcionar.