Я реализовал простой звуковой плеер Java (.wav), который хорошо работает, за исключением того, что после воспроизведения 50-60 звуков он просто перестает работать.Воспроизведение звука в Java через некоторое время перестает работать
код похож на Playing .mp3 and .wav in Java?, но я все равно буду размещать мое здесь:
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class NewWavPlayer {
private URL url;
private AudioInputStream audio;
public NewWavPlayer(URL url) {
this.url = url;
}
public void play() {
try
{
InputStream audioSrc = url.openStream();
InputStream bufferedIn = new BufferedInputStream(audioSrc);
audio = AudioSystem.getAudioInputStream(bufferedIn);
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
} catch(Exception e) {
System.err.println(e);
}
}
}
ошибка, что я получаю через некоторое время это:
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported.
или
javax.sound.sampled.LineUnavailableException: line with format PCM_UNSIGNED 22050.0 Hz, 8 bit, mono, 1 bytes/frame, not supported.
Но это не имеет смысла, потому что тот же самый звук воспроизводился раньше (или другие звуки, которые уже играют d правильно). Я запускаю его на Linux Ubuntu 15.04, и другие пользователи испытывали то же самое с другими SO.
Я попытался переопределить его потоками, но я получил ту же ошибку. Я хотел бы знать, какие шаги я должен предпринять дальше.
Или вы могли бы просто сделать вашу жизнь проще и использовать [Попробовать-с-ресурсов Заявление] (https://docs.oracle.com/javase/tutorial/essential/ exceptions/tryResourceClose.html) – MadProgrammer
Это хороший совет, но, к сожалению, это не сработало для меня. Ошибка сохраняется. Когда я снова запускаю приложение (через Eclipse или как .jar), он снова работает, пока он не перестанет воспроизводить звук примерно 50-60 раз (я считаю). – Chaotic
Звучит так, как будто у вашей ОС заканчиваются ручки. Я бы рекомендовал добавить предложения finally, перезагрузиться и посмотреть, существует ли проблема. В худшем случае это устранит эту теорию. Просто предложение :) – Kabir