6

Estoy desarrollando una aplicación de procesamiento de audio donde necesito grabar audio, y luego la proceso para obtener características de esa grabación. Sin embargo, quiero que el audio en un formato reproducible lo reproduzca después con MediaPlayer.Android AudioRecord y MediaRecorder

He visto que para grabar audio para procesarlo es mejor usar AudioRecord, porque puedo obtener el audio sin procesar desde allí. Pero luego no puedo escribir los datos en un archivo en un formato reproducible (¿hay alguna biblioteca para hacer esto en Android?).

que utilizan este método para grabar datos en bruto y luego escribirlo en un archivo: http://andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/ Pero cuando intento reproducir este archivo en el dispositivo, no es reproducible.

Entonces, si uso MediaRecorder no sé cómo decodificar los datos para extraer las características. He estado buscando en MediaExtractor, pero parece que MediaExtractor no decodifica los marcos.

Entonces ... ¿cuál es la mejor manera de hacer esto? Me imagino que eso es común en cualquier aplicación de procesamiento de audio, pero no pude encontrar la manera de gestionar esto.

Gracias a sus respuestas.

Respuesta

16

Usando AudioRecord es el camino correcto a seguir si se necesita hacer ningún tipo de procesamiento. Para reproducirlo, tienes un par de opciones. Si solo va a reproducirlo en su aplicación, puede usar AudioTrack en lugar de MediaPlayer para reproducir transmisiones PCM sin formato.

Si desea que se pueda reproducir con otras aplicaciones, primero tendrá que convertirlo en algo diferente. WAV es normalmente el más simple, ya que solo necesita agregar el header. También puede encontrar bibliotecas para convertir a otros formatos, como JOrbis para OGG, o JLayer para MP3, etc.

+0

Gracias, esto funcionó para mí. Finalmente grabé el audio en archivos pcm sin procesar, y pude reproducirlos usando AudioTrack. – Miquel

2

Si utiliza el objeto AudioRecord para obtener la señal de audio sin formato, el siguiente paso para guardarlo es guardar como un archivo reproducible no es tan difícil, solo necesitas agregar un WAV Head antes de los datos de audio que capturas, luego obtienes un archivo .WAV que puedes reproducir en la mayoría de los teléfonos móviles.

Un archivo .WAV es un archivo en formato RIFF. el encabezado RIFF para el archivo WAV tiene 44 bytes de longitud y contiene la frecuencia de muestreo, el ancho de la muestra y la información del recuento de canales. puede obtener la información detallada de here

Hice la función de muestra en teléfonos Android y funcionó.

Cuestiones relacionadas