【问题标题】:Trying to play music in Java: java.lang.IllegalArgumentException: Invalid format尝试用 Java 播放音乐:java.lang.IllegalArgumentException:格式无效
【发布时间】:2013-01-24 09:10:18
【问题描述】:

这是我第一次尝试在我的代码中使用歌曲。 我一直在关注一个解释如何播放歌曲的网页(http://www3.ntu.edu.sg/home/ehchua/programming/java/J8c_PlayingSound.html),但我遇到了错误 ava.lang.IllegalArgumentException:无效的格式。 我不明白为什么会发生这种情况以及我可以做些什么来播放歌曲。

这是不起作用的代码:

 private void startMusic() throws UnsupportedAudioFileException, IOException, LineUnavailableException {
        // from a wave File
        File soundFile = new File("/home/simone/OhHa/Pakman02/src/main/java/Pakman/ArsenioLupin.wav");
        AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
        Clip clip = AudioSystem.getClip();
        clip.open(audioIn);
// For small-size file only. Do not use this to open a large file over slow network, as it blocks.
        // start()
        clip.start();  // play once
// Loop()
//        clip.loop(0);  // repeat none (play once), can be used in place of start().
//        clip.loop(5);  // repeat 5 times (play 6 times)
        clip.loop(Clip.LOOP_CONTINUOUSLY);  // repeat forever
    }

有什么建议吗?

【问题讨论】:

    标签: java playback


    【解决方案1】:

    试试这个。注意 javax.sound.sampled.* 的导入

     import java.io.*;
    import java.net.URL;
    import javax.sound.sampled.*;
    import javax.swing.*;
    
    public class SoundClipTest extends JFrame {
    
    // Constructor
    public SoundClipTest() {
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setTitle("Test Sound Clip");
      this.setSize(300, 200);
      this.setVisible(true);
    
      try {
         // Open an audio input stream.
         URL url = this.getClass().getClassLoader().getResource("/home/simone/OhHa/Pakman02/src/main/java/Pakman/ArsenioLupin.wav");
         AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
         // Get a sound clip resource.
         Clip clip = AudioSystem.getClip();
         // Open audio clip and load samples from the audio input stream.
         clip.open(audioIn);
         clip.start();
      } catch (UnsupportedAudioFileException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      } catch (LineUnavailableException e) {
         e.printStackTrace();
      }
    }
    
    public static void main(String[] args) {
       new SoundClipTest();
    }
    }
    

    另一种选择是

    import javax.swing.*;
    import sun.audio.*;
    import java.awt.event.*;
    import java.io.*;
    public class Sound {
    public static void main(String[] args)
    {
    JFrame frame = new JFrame();
    frame.setSize(200,200);
    JButton button = new JButton("Click me");
    frame.add(button);
    button.addActionListener(new AL());
    frame.show(true);
    }
    public static class AL implements ActionListener{
    public final void actionPerformed(ActionEvent e){
    music();
    }
    }
    public static void music(){
    AudioPlayer MGP = AudioPlayer.player;
    AudioStream BGM;
    AudioData MD;
    ContinuousAudioDataStream loop = null;
    try{
    BGM = new AudioStream(new FileInputStream("C:\home\simone\OhHa\Pakman02\src\main\java\Pakman\ArsenioLupin.wav"));
    MD = BGM.getData();
    loop = new ContinuousAudioDataStream(MD);
    }catch(IOException error){
    System.out.print("file not found");
    }
    MGP.start(loop);
    }
    }
    

    【讨论】:

    • Nope... 现在错误消息如下: com.sun.media.sound.StandardMidiFileReader.getSequence(StandardMidiFileReader.java:226) 线程“main”java.lang.NullPointerException 中的异常) 在 javax.sound.midi.MidiSystem.getSequence(MidiSystem.java:819) 在 com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:174) 在 javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem. java:1145) 在 Pakman.gui.SoundClipTest.(SoundClipTest.java:28) 在 Pakman.Pakman.createWorld(Pakman.java:56) ecc.
    • 您也可以在这个地址查看代码:github.com/SMRomeo/OhHa/tree/master/Pakman02/src/main/java
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多