Как сделать повторное воспроизведение аудио?

Пытаюсь сделать так, чтобы аудиофайл проигрывался вновь после завершения.

Библиотеки, которые я использую:

import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

Я использую цикл while, булеву переменную и sleep():

boolean play = true;
            while(play) {
                playMusic("C:\\Users\\Ученик\\IdeaProjects\\Game\\src\\com\\company\\audio\\skeleton.wav");
                Thread.sleep(10);
}

Вот функция:

public static void playMusic(String filepath) {
        String reset = "\u001B[0m";
        String red = "\u001B[31m";
        //->
        InputStream music;
        try {
            music = new FileInputStream(new File(filepath));
            AudioStream audios = new AudioStream(music);
            boolean game = true;
            while(true)
                AudioPlayer.player.start(audios);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Error. Can't find an audiofile skeleton.wav");
            System.out.println(red + "Error. Can't find an audiofile skeleton.wav" + reset);
        }
    }

После завершения аудио наступает тишина. Аудио не проигрывается повторно через 10 миллисекунд.. Почему? Как сделать повторное воспроизведение аудио?


Ответы (1 шт):

Автор решения: web developer

Не используйте sun.*пакеты, это частные пакеты и не всегда могут быть доступны. Взгляните на этот пример , чтобы узнать, как воспроизвести аудиоклип. Взгляните на ClipиClip#loop Как очень простой пример...

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(...);
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.loop(Clip.LOOP_CONTINUOUSLY);
clip.start();
→ Ссылка