2016-08-22 126 views
1

我想播放一個wav文件,並在我Google搜索後發現這個腳本,但它不起作用。 (它沒有拋出任何異常,也有編制問題)如何使用Java播放wav文件?

import java.io.File; 
import films.Film; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.Clip; 

public class MusicStorage { 

/** 
* Opens a wav file and plays it 
* @param args 
*/ 
public void play(Film song) { 
    try { 
     Clip sound = AudioSystem.getClip(); 

     sound.open(AudioSystem.getAudioInputStream(new File(song.getClip()))); 

     sound.start(); 

     while (sound.isRunning()) 
      Thread.sleep(1000); 

     sound.close(); 
    } catch (Exception e) { 
     System.out.println("Whatever" + e); 
    } 
    } 
} 

import audio.MusicStorage; 
import films.Film; 

public class Aplication { 

private static Film gladiator = new Film("Gladiator", "gladiator.wav"); 
private static MusicStorage storage = new MusicStorage(); 

public static void main(String[] args) { 
    storage.play(gladiator); 
} 
} 

public class Film { 

private String name; 
private String clip; 

public Film(String name, String clip) { 
    this.name = name; 
    this.clip = clip; 
} 

public String getClip() { 
    return clip; 
} 

public String getName() { 
    return name; 
} 
} 

我添加了所有,我有這樣的代碼,我希望這將是明確的解決我的問題

+0

哪裏是你打電話播放(電影歌曲)的主要方法?請顯示所有相關代碼 – smoggers

+0

(while sound.isRunning())應該可以工作! –

+0

無計可施。您提供的代碼中沒有任何內容可以運行任何內容。 –

回答

0

只需卸下while循環從你的代碼,它應該是固定的。 while循環正在使線程休眠,因此無法播放音頻文件。

public void play(Film song) { 
    try { 
     Clip sound = AudioSystem.getClip(); 

     sound.open(AudioSystem.getAudioInputStream(new File(song.getClip()))); 

     sound.start(); 

    } catch (Exception e) { 
     System.out.println("Whatever" + e); 
    } 
    } 
}