在java中播放.WAV文件时出现问题



我创建了一个我认为非常简单的程序,用Java播放.wav文件,但程序启动时声音没有播放。我所有的导入似乎都很好,我不太确定为什么它没有播放,我开始怀疑我放置文件的位置是否有问题。我在这里附上了我的代码和我的文件位置的截图。如果需要更多信息,请告诉我。感谢您的帮助。

package javaSounds;
import java.io.File;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class JavaSounds {
public static void main(String[] args) {
File explosion = new File("explosion.wav");
PlaySound(explosion);
}
static void PlaySound(File Sound) {
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(Sound));
clip.start();
} catch (Exception e) {
}
}
}

问题不在于寻址,而是程序在声音播放之前完成并关闭。

命令clip.start()守护进程线程上启动并播放声音。这些线程即使同时运行,也不会打开Java程序。由于程序中没有发生任何其他事情,所以一切都会关闭,什么也听不到。

测试这一点的一个简单方法是在启动剪辑后添加命令Thread.sleep(..)。一种更常见的做法是从GUI触发声音,其中GUI的存在使java程序在剪辑的持续时间内保持活动。

如果你的声音在添加睡眠暂停后没有播放,那么我们可以看看寻址。顺便说一下,从URL获取AudioInputStream比从File获取要好。如果您计划jar程序并将音频资源作为jar的一部分,File将无法定位这些内部资源。

最新更新