У меня есть проблема правильно воспроизводить звук на Java, используя интерфейс Clip.Проблемы с Java, воспроизводящие звуковые клипы
Воспроизведение звука работает с помощью:
clip = (Clip)mixer.getLine(dataLineInfo);
clip.open(audioFormat, byteData, 0, byteData.length);
clip.start();
Однако есть утечка памяти, если клипы не закрыты.
Я попытался добавить строку слушателя перед началом клипа, а также использовать следующий код:
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
Однако, это вызывает звук degrage.
Добавление второго спящего режима в метод заставляет все работать на моей машине - но я бы предпочел более элегантное решение - я не думаю, что ожидание в методе слушателя - это хорошая практика, а другие машины могут занять больше времени.
Причудливо, что событие остановки отправляется некоторое время в произвольное время до остановки звука.
Есть ли у кого-нибудь идеи по лучшему пути решения этой проблемы?
(относящиеся к this, this и this, но ни один из них решения для меня)
Спасибо, это проблема. «Старая реализация (Java Sound Engine) не будет исправлена». Следовательно, теперь код пытается использовать микшер System default. – Pool