Bonsoir.
Je voudrais faire de la VoIP entre mon smartphone et mon pc. Pour cela, je capture le flux du micro du smartphone (cf code ci-dessous), et je l'envoie sur mon pc via socket. Pour le moment le programme sur le pc se contente d'enregistrer ce qu'il reçoit dans un fichier afin de vérifier que les données reçues sont correctes.
Mon souci c'est que les données ne sont pas du tout correctes, elles ont l'air d'être répliquées plusieurs fois, du coup le fichier est illisible avec un lecteur audio.
Le code ressemble en gros à ça :
Je pense que les données enregistrées par le micro s'écrivent dans un buffer et que donc je lis ce buffer trop souvent, ce qui me renvoie plein de fois la même chose...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 OutputStream out = socket.getOutputStream(); android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); int buffersize = AudioRecord.getMinBufferSize( 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); AudioRecord arec = new AudioRecord( MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize); byte[] buffer = new byte[buffersize]; arec.startRecording(); while(true) { arec.read(buffer, 0, buffersize); out.write(buffer, 0, buffersize); out.flush(); }
Une idée de la bonne marche à suivre ? J'ai trouvé plein de bouts de code sur le net mais j'ai ce problème avec tous.
Merci d'avance pour vos réponses.
Partager