每次按下按钮,我都会尝试播放.wav
文件。
我已将资源与项目一起放在工作区中。这是错的吗?
我收到此错误消息:
javax.sound.sampled.AudioInputStream@341bdd4c /home/fred/workspace/Projekt/src/GUI/sound/gangnam.wav java.lang.IllegalArgumentException:格式无效
以下是代码:
public static void main (String [] args) {
JFrame customBoardFrame = new JFrame("Custom Size.");
customBoardFrame.getContentPane().add(new customSize());
customBoardFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
customBoardFrame.setSize(450, 310);
customBoardFrame.setVisible(true);
customBoardFrame.setResizable(false);
}
public class customSize extends JPanel implements ActionListener {
JButton playButton = new JButton(" >> PLAY <<");
JButton stopButton = new JButton(" >> STOP <<");
JButton pauseButton = new JButton(" >> PAUSE <<");
public customSize(){
setLayout(null);
playButton.setBounds(12, 173, 116, 40);
add(playButton);
playButton.addActionListener(this);
pauseButton.addActionListener(this);
stopButton.addActionListener(this);
stopButton.setBounds(140, 173, 117, 40);
add(stopButton);
pauseButton.setBounds(269, 173, 140, 40);
add(pauseButton);
}
public void actionPerformed(ActionEvent e){
if (e.getSource().equals(playButton)) {
try {
String soundName = "gangnam.wav";
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(soundName).getAbsoluteFile());
System.out.println(audioInputStream);
System.out.println(new File (soundName).getAbsolutePath());
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch (Exception e1) {
System.out.println("Error.");
}
}
if (e.getSource().equals(stopButton)) {
System.out.println("Stop music.");
}
if (e.getSource().equals(pauseButton)) {
System.out.println("Pause music.");
}
}
}
答案 0 :(得分:1)
尝试解决此问题的第一步是手动检查wav文件本身的属性。在Windows中,您可以右键单击并选择属性。然后,有第二个选项卡,其中包含比特率和fps。
Java可以支持44100 fps和16位编码。但是现在有DAW可以产生48000或96000 fps的wav文件,或24位或32位编码。 Java目前不支持这些,AFAIK。
如果您有这样的文件,您可以使用Audacity程序轻松将其修改为可接受的格式(立体声,16位,44100fps),这是一个免费下载。只要确保从他们的主页获得它。我第一次下载它,Popuppalooza几个小时,直到我能够摆脱所有随附的垃圾软件。主站点下载(请参阅维基百科的链接)应该没问题。
答案 1 :(得分:0)
检查音频文件格式。 您的系统格式支持的所有格式都可以通过javax.sound.sampled.AudioSystem.getAudioFileTypes()
进行检查