我已经阅读了有关Java AudioClip的先前问题并进行了研究,但我仍然无法弄清为什么
AudioClip无法播放。 .wav剪辑在Eclipse IDE中可以正常运行,它也位于相应的目录中;如果文件
位于错误的目录中,此代码段会引发错误消息。
我的教授要求我们也使用audioClip = Applet.newAudioClip(new File(filePath).toURI().toURL());
这种格式播放audioClip
当执行底部的play方法时,确实会被调用,但是没有声音!
任何帮助,将不胜感激。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.net.MalformedURLException;
public class PlaySoundApplet extends Applet implements ActionListener
{
private static final long serialVersionUID = 1L;
Button play,stop;
AudioClip audioClip;
public void init()
{
play = new Button("Play");
add(play);
play.addActionListener(this);
stop = new Button("Stop");
add(stop);
stop.addActionListener(this);
try
{
String filePath = "." + File.separator + "audio" + File.separator + "island_music.wav";
File file = new File(filePath);
if (file.exists())
{
audioClip = Applet.newAudioClip(file.toURI().toURL());
}
else
{
throw new RuntimeException("Directory " + filePath + " does not exist"); //debugging
}
}
catch (MalformedURLException malformedURLException)
{
throw new RuntimeException("Malformed URL: " + malformedURLException); //debugging
}
}
public void actionPerformed(ActionEvent ae)
{
Button source = (Button)ae.getSource();
if (source.getLabel() == "Play")
{
audioClip.play();
System.out.println("Play was executed");
}
else if(source.getLabel() == "Stop")
{
audioClip.stop();
System.out.println("Stop was executed");
}
}
}
最佳答案
使用简单的leftright.wav尝试代码。
大多数媒体格式(声音,图像,视频等)都是所谓的“容器格式”。媒体的编码可以有多种类型。 Java读取某些编码,但不读取其他编码。
如果是用于应用程序资源,则倾向于将当前的WAV转换为与Java Sound兼容的类型。