J'ai un problème pour lire un son correctement en Java en utilisant l'interface Clip.Problèmes Java lors de la lecture de clips audio
Jouer le son fonctionne en utilisant:
clip = (Clip)mixer.getLine(dataLineInfo);
clip.open(audioFormat, byteData, 0, byteData.length);
clip.start();
Cependant, il y a une fuite de mémoire si clips ne sont pas fermées.
J'ai essayé d'ajouter un écouteur de ligne avant de commencer le clip, et utilisez le code suivant:
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
Cependant, cela provoque le son degrage. Ajouter une seconde de sommeil dans la méthode fait que les choses fonctionnent à nouveau sur ma machine - mais je préférerais une solution plus élégante - Je ne pense pas que l'attente dans une méthode d'écoute est une bonne pratique et que les autres machines prennent plus de temps.
Il est bizarre que l'événement d'arrêt soit envoyé un certain temps avant l'arrêt du son.
Quelqu'un at-il des idées sur une meilleure façon de résoudre ce problème?
(par rapport à this, this et this mais aucune des solutions pour moi)
Merci - c'est le problème. "L'ancienne implémentation (Java Sound Engine) ne sera pas corrigé." Ainsi, le code tente maintenant d'utiliser le mélangeur par défaut du système. – Pool