решено
Возникла проблема с Runnable, поэтому одновременно работали ДВА игровых потока.(Равно проблема!) Итак, второй поток, попавший в аудиоплеер, допустил ошибку, и именно поэтому он звучал эхом - он воспроизводился из двух разных потоков!
Я также использую SourceDataLine, как было предложено, чтобы включитьболее длинные звуковые клипы.
Оригинальный пост-
Когда этот код срабатывает, появляется сообщение о том, что
IllegalStateException: Mixer is already open
в clip.open()
строка.Я приложил все усилия, чтобы проверить, выполняется ли код дважды, это не так.Однако даже с ошибкой звук все равно играет.На более длинных клипах (30 секунд) звучит так, как будто звучит 2 звука, один за другим.На действительно длинных клипах (3 минуты) звук заикается.
(stringFile
- это String
, например, "example.wav"
)
File soundFile = new File(stringFile);
AudioInputStream inputStream = AudioSystem.getAudioInputStream(soundFile);
AudioFormat format = inputStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.open(inputStream);
clip.start();
playing = true;
Если этот вопрос уже был опубликован,Мне очень жаль.Я искал и не нашел ни одной темы, похожей на эту.