Pour mon application, j'ai besoin d'enregistrer de l'audio à partir de MIC sur un téléphone Android, et l'envoyer sur TCP à l'autre téléphone android, où il doit être joué. J'utilise la classe AudioRecord
et AudioTrack
. Cela fonctionne très bien avec un fichier - écrivez de l'audio dans le fichier en utilisant DataOutputStream
, et lisez en utilisant DataInputStream
. Toutefois, si j'obtiens le même flux à partir d'une socket à la place d'un fichier et que j'essaie d'écrire dessus, j'obtiens une exception. Je n'arrive pas à comprendre ce qui pourrait mal se passer. Toute aide serait grandement appréciée.Android: Streaming audio sur Sockets TCP
EDIT: Le problème est le même même si j'essaie avec des tailles de tampon plus grandes (65535 octets, 160000 octets).
Voici le code:
Enregistreur:
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);
}
Le DataOutputStream est obtenue ci-dessus:
BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
Pourriez-vous s'il vous plaît jeter un oeil, et laissez-moi savoir quel est-il que je pourrais faire mal ici?
Merci,
Avez-vous réussi à envoyer le fichier audio à d'autres appareils? – B770