我已經實現了一個簡單的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/例外/ tryResourceClose.html) – MadProgrammer
這是一個不錯的提示,但不幸的是它不適合我。錯誤仍然存在。當我再次運行應用程序(通過Eclipse或作爲外部的.jar)時,它會再次運行,直到50-60次(我計算)再現聲音後突然停止。 – Chaotic
它聽起來像你的操作系統沒有用完了。我會建議添加最後的子句,重新啓動並查看問題是否存在。最糟糕的是,這將消除這一理論。只是一個建議:) – Kabir