Para mi aplicación, necesito grabar audio de MIC en un teléfono Android y enviarlo a través de TCP al otro teléfono Android, donde debe reproducirse.Android: Transmisión de audio a través de sockets TCP
Estoy usando AudioRecord
y clase. Esto funciona muy bien con un archivo: escriba audio en el archivo usando DataOutputStream
, y léalo usando DataInputStream
.
Sin embargo, si obtengo la misma transmisión de un socket en lugar de File, y intento escribir en ella, obtengo una excepción.
No entiendo qué podría estar yendo mal. Cualquier ayuda sería muy apreciada.
EDITAR: El problema es el mismo incluso si trato con tamaños de búfer más grandes (65535 bytes, 160000 bytes).
Este es el código:
Grabadora:
int bufferSize = AudioRecord.getMinBufferSize(11025, , AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
byte[] tempBuffer = new byte[bufferSize];
recordInstance.startRecording();
while (/*isRecording*/) {
bufferRead = recordInstance.read(tempBuffer, 0, bufferSize);
dataOutputStreamInstance.write(tempBuffer);
}
El DataOutputStream se obtuvo anteriormente como:
BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
Podría por favor una mirada, y quiero saber qué es lo que podría estar haciendo mal aquí?
Gracias,
¿Se las arregló para enviar el archivo de audio a otros dispositivos? – B770