Actualmente uso las clases AudioTrack y AudioRecord en Android.Opciones de códec Android AudioRecord y AudioTrack?
Uso los datos puros de PCM pero me preguntaba cuáles son mis opciones para otros códecs.
De this page parece que solo puedo codificar y decodificar usando banda estrecha AMR?
Actualmente puedo configurar las clases de audio de la siguiente manera:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
Así que mi pregunta es ¿cómo puedo cambiar la codificación de PCM a uno de los otros códecs compatibles?
Cuando intento cambiar ENCODING_PCM_16BIT en AudioFormat solo obtengo las opciones de codificación predeterminada o no válida junto con las opciones de PCM.
Cualquier enlace a tutoriales sobre codificación y decodificación de audio en Android sería genial si alguien sabe de alguna o alguna ayuda aquí muy apreciada.
Gracias
EDIT: me han cambiado mi código a la siguiente:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize,
AudioTrack.MODE_STREAM);
El código se ejecuta correctamente, pero me pregunto ¿realmente codificar el audio como AMR_NB y si esto es no es una forma adecuada de hacerlo?
que estaba recibiendo un desbordamiento de búfer cuando se utiliza PCM en bruto, pero ninguno ha aparecido desde utilizando el nuevo código con el MediaRecorder.AudioEncoder.AMR_NB utiliza en lugar de la AudioFormat.PCM
Ha pasado mucho tiempo desde que publicó su pregunta, pero tal vez todavía sea interesante para alguien ... No está codificando para AMR_NB. Los indicadores son solo campos internos. MediaRecorder.AudioEncoder.AMR_NB es 0x01 ... igual que AudioFormat.ENCODING_DEFAULT. Entonces solo estás usando la codificación predeterminada. – hacksteak25