在Java中播放.wav
我知道,另一个。问题是,我已经查遍了我能找到的每一条线索,这个问题仍然存在——我没有发现任何错误,我的耳机“砰砰”地响起来,好像它们要播放声音,但什么都不播放。程序终止前会有一个延迟,但我不知道这是什么指示还是Java关闭在Java中播放.wav,java,audio,wav,Java,Audio,Wav,我知道,另一个。问题是,我已经查遍了我能找到的每一条线索,这个问题仍然存在——我没有发现任何错误,我的耳机“砰砰”地响起来,好像它们要播放声音,但什么都不播放。程序终止前会有一个延迟,但我不知道这是什么指示还是Java关闭 import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class Main {
public static void main(String[] args) {
try{
// AudioInputStream ais = AudioSystem.getAudioInputStream(Main.class.getResource("bells.wav"));
AudioInputStream ais = AudioSystem.getAudioInputStream(new File("bells.wav"));
Clip test = AudioSystem.getClip();
test.open(ais);
test.start();
test.drain();
test.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
编辑:现在工作代码:
import java.io.File;
import javax.sound.sampled.*;
public class Main {
public static void main(String[] args) {
try{
AudioInputStream ais = AudioSystem.getAudioInputStream(new File("bells.wav"));
Clip test = AudioSystem.getClip();
test.open(ais);
test.start();
while (!test.isRunning())
Thread.sleep(10);
while (test.isRunning())
Thread.sleep(10);
test.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
@gpasch我做了,是的,试过有没有。谢谢。另外@gpasch,为了记录在案,官方文档在示例末尾使用了clip.close()。对于任何感兴趣的人,下面第三个答案的脚注解决了这个问题:-问题是clip.drain();线程阻塞不是应该的。我已经用我的(现在正在使用的)代码更新了主要帖子,以备将来参考。正如下面的评论所说,你不应该像答案所建议的那样旋转。而且,在已经有主线程的普通应用程序中,这也不会是一个问题。显示
LineListener
的其他示例要好得多<代码>LineListener将在剪辑完成时告诉您。不过,我很高兴你发现了这个问题。