2016-08-22 129 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); 
    } 
    } 
}