2013-03-27 61 views
1

我有兩個相似的波(類似的格式),我預裝他們與此代碼打開同一個wav文件給我一個javax.sound.sampled.LineUnavailableException

Clip click1; 
Clip click2; 

File soundFile = new File("click1.wav"); 
AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile); 
DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat()); 
click1 = (Clip) AudioSystem.getLine(info); 
click1.open(sound); 

soundFile = new File("click2.wav"); 
sound = AudioSystem.getAudioInputStream(soundFile); 
info = new DataLine.Info(Clip.class, sound.getFormat()); 
click2 = (Clip) AudioSystem.getLine(info); 
click2.open(sound); 

第一個文件是負載,但第二拋出一個異常:

javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported. 
    at com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen(DirectAudioDevice.java:492) 
    at com.sun.media.sound.DirectAudioDevice$DirectClip.implOpen(DirectAudioDevice.java:1278) 
    at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:107) 
    at com.sun.media.sound.DirectAudioDevice$DirectClip.open(DirectAudioDevice.java:1059) 
    at com.sun.media.sound.DirectAudioDevice$DirectClip.open(DirectAudioDevice.java:1149) 

我試過在click2的剪輯上設置click1.wav,我也有同樣的錯誤。

我的Ubuntu 11.04,這是Java的版本的結果

java version "1.6.0_43" 
Java(TM) SE Runtime Environment (build 1.6.0_43-b01) 
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode 

編輯

這是的DataLine.Info

的的System.out.println結果

click1 =接口剪輯支持格式PCM_SIGNED 11025.0 Hz,16位,單聲道,2字節/幀,小尾數

CLICK2 =界面剪輯支撐格式PCM_SIGNED 11025.0赫茲,16位,單聲道,2個字節/幀,小端

回答

0

兩個故障排除思路:

1)打開的文件。錯誤是否切換到第一次加載?如果沒有,那麼問題可能是由於下一個建議。

2)不要嘗試重複使用「信息」或「聲音」,製作新的變量。

哪條線發生錯誤?我不認爲Java可以讓你重用聲音變量。我不清楚爲什麼。我只記得當我試圖重用變量時,我不得不一直回到'soundFile'變量,然後Java才允許我這樣做。

+0

謝謝,但我試圖使用新的變量,我有同樣的問題。 – 2013-04-03 07:26:13

+0

你對AudioInputStream'sound','info'變量和'soundFile'使用完全不同的變量嗎?如果它不起作用,看看你是如何實現這一點會很有幫助的。 – 2013-04-03 08:21:29

+0

我已經升級到Java 7,我解決了這個問題。但是,我已經對「聲音」,「信息」和「聲音文件」使用了不同的變量。 – 2013-04-16 07:54:33

相關問題