我一直在尝试通过Java播放音频片段,并且在使用javafx库时遇到了麻烦。我已将声音文件放在我的src文件夹中并尝试了各种访问方式,但每次访问它时我都会收到NullPointerException。
Media sound = new Media("file:beep.wav");
MediaPlayer player = new MediaPlayer(sound);
player.play();
我尝试访问该文件的另一种方法是
File f = new File("beep.wav");
Media sound = new Media(f.toString());
还尝试了其他一些事情。当我这样做时,system.out.print会检查所有文件名和路径是否正确打印
我在Ubuntu(Wily)15.10上运行它,使用Eclipse(Kepler),如果这可以帮助任何人帮助我
感谢帮助!
答案 0 :(得分:0)
您是在文本编辑程序(NetBeans,Eclipse等)上运行程序还是尝试运行jar文件?
在第一种情况下,尝试将音频文件放在项目文件夹中。例如:C:/.../ NetBeansProjects / MyPRoject / beep.wav,但声明它没有任何文件夹名称,例如
Something f = new Something("beep.wav"); // Something is not an Object XD
在第二种情况下,在清理构建之后将音频文件放在项目的dist文件夹中。
如果有帮助,请告诉我。
答案 1 :(得分:0)
是的,我尝试过但没有成功。
我尝试使用Clip方法(如下所示),发现在播放声音超过20次左右后我遇到了内存错误。清除了与系统剪辑有关的内存以修复错误我刚刚决定它可能是驱动程序问题,因为我在(32位)Lubuntu上运行并且不得不手动安装一些驱动程序。
clip = AudioSystem.getClip(null);
clip.open(AudioSystem.getAudioInputStream(sound));
clip.start(); //Clip.stop somewhere down the line
然后我安装了最新版本的(64位)Ubuntu,剪辑方法从此对我起到了很好的作用。
使用此方法避免内存问题时,我是否应该进行任何清理,或者外部程序是否会为我处理?
感谢您的及时回复。
答案 2 :(得分:0)
将所有声音文件放在一个名为“声音”的文件夹中。该文件夹应与src文件夹位于同一级别的项目文件夹中。然后调用以下将音频文件名作为String参数的方法。
public void playSound (String musicFile){
Media sound = new Media(new File("sounds/" + musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.stop();
mediaPlayer.play();
}
playSound("do.wav")