Bonjour je réalise un simple enregistreur dans lequel je souhaite afficher le niveau sonore dans une JProgressBar et dans le même temps enregistrer le signal dans un fichier.
Pour l'instant je n'arrive à faire que l'un ou l'autre mais pas les deux en même temps.
Pour afficher le niveau j'ai recours à la methode line.read dans lequel je manipule dans une boucle while le buffer pour afficher ma JProgressBar
Pour enregistrer le fichier je n'ai trouvé que la méthode write
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while(!stopCaptureSignal){ int cnt=line.read(tempBuffer,0,tempBuffer.length); if (cnt>0){ progressBar.setValue((int)(calculateRMSLevel(tempBuffer))); } }
AudioInputStream ais = new AudioInputStream(line);
AudioSystem.write(ais, fileType, wavFile);
qui est de "haut niveau" et ne permet pas de manipulation. Il n'y a pas de boucle permettant d"afficher le niveau au fur et à mesure de la capture
Si je lance 2 threads un pour le AudioStream.write et un pour le line.read évidemment le fichier audio obtenu est inaudible puisqu'il manque les données correspondant à tous les buffers utilisés par le line.read pour afficher la JProgressBar
Y a t il un moyen pour écrire le fichier audio à partir de la boucle line.read sans avoir recours à AudioSystem.write ? ou bien d'ouvrir 2 TargetDataLines à partir de la même source audio ?
J'ai fouillé sur le net et je ne trouve rien sur ce sujet pourtant assez basique.
Merci de vos lumières.
Partager