Android: valor recomendado de bufferSizeInBytes en AudioRecord
Estoy utilizando la clase AudioRecord que el constructor es:
AudioRecord( int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)
En todos (o en la mayoría) de los tutoriales y ejemplos que encuentro en Internet es recomendable establecer bufferSizeInBytes como sigue:
- Android detecta AudioRecord / maneras de grabar audio sin bloquear otras aplicaciones
- FFT de audio Android para recuperar la magnitud de frecuencia específica mediante audiorecord
- Android AudioRecord y MediaRecorder
- Creación de un archivo WAV a partir de datos PCM sin procesar utilizando el SDK de Android
- Cambiar registro de audio de Android Fuente de entrada predeterminada
bufferSizeInBytes= getMinBufferSize ( int sampleRateInHz, int channelConfig, int audioFormat)
¿Podría alguien decirme la razón?
Necesito hacer la correlación entre los valores que estoy grabando y un patrón. Este patrón es más largo que MinBufferSize. Por lo tanto, debería simplemente aumentar bufferSizeInBytes al valor que prefiero, o es que va a empeorar el rendimiento de AudioRecord.
- AudioRecord - archivo PCM de escritura
- Emitir codificación y decodificación de una grabación de audio al formato G711 (PCMU - uLaw)
- Cancelación de ruido activo de Android
- No se puede acceder a AudioRecorder
- ¿El mejor método para roscar en Android?
- ¿Cómo ajustar la frecuencia de muestreo de audio superior a 44.1kHz en la plataforma linux / android?
- Android grabación y reproducción + altavoz como una opción
- Android AudioRecord clase - proceso de mic audio en vivo rápidamente, configurar la función de devolución de llamada
¿Podría alguien decirme la razón?
Porque lo que devuelve getMinBufferSize
para una configuración dada es el tamaño de búfer más pequeño que se le permitirá especificar al crear AudioRecord
.
¿Por qué desea el tamaño de memoria intermedia más pequeño posible? Para obtener la menor latencia posible.
Imagine que está haciendo algo como un medidor SPL; No querrás que haya un retraso de un segundo antes de que tu interfaz de usuario reaccione a un cambio en la presión del sonido.
El tamaño del búfer no determina la cantidad de datos que puede solicitar de read()
. Está bien solicitar más datos que el tamaño del AudioRecord's
; read()
simplemente no volverá hasta que se hayan leído todos los datos que ha solicitado.
- Pasa la variable de cadena de java a php
- Cómo fijar correctamente fixTransX y fixTransY de TouchImageView para implementar doubleTap a ZoomOut?