// init des formats AudioFormat inputFormat = new AudioFormat(8000.0F, 16, 1, true, false); // le format de sortie que tu veux ; // ici du G711a mais adaptable pour d'autes formats AudioFormat outputFormat = new AudioFormat(AudioFormat.Encoding.ALAW, 8000, 8, 1, 1, 8000, false); // init du mic DataLine.Info info = new DataLine.Info(TargetDataLine.class, inputFormat); // test si il existe un device pour la capture if (!AudioSystem.isLineSupported(info)) throw new IOException("No mic found !"); targetDataLine = (TargetDataLine) AudioSystem.getLine(info); targetDataLine.open(inputFormat); targetDataLine.start(); // init des flux AudioInputStream inputStream = new AudioInputStream(targetDataLine); outputStream = AudioSystem.getAudioInputStream(outputFormat, inputStream); ... // ici j'utilise une taille de 320 octets pour les données du mic. // le mic est configuré pour capturer en pcm 8k, de plus je pars du principe // que les paquets RTP seront envoyés toutes les 20ms, du coup une trame // G711a (PCMa) vaut 160 octets et comme le PCMa 'vaut' la moitié du PCM... byte[] voice = new byte[320]; outputStream.read(voice, 0, voice.length); // ici tu peux ajouter l’entête RTP aux données capturées et/ou faire // autre chose avec... bref tu peux exploiter les données ici ... // arrêt de la capture targetDataLine.stop(); targetDataLine.close();