0

我一直在尝试在我的应用程序中播放音乐。我一直在使用示例 BigClip 代码:

try {
        url = new URL(Sounds.class.getResourceAsStream("title1.wav").toString());
        } catch (MalformedURLException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        BigClip clip = new BigClip();
        AudioInputStream ais = null;
        try {
            ais = AudioSystem.getAudioInputStream(url);
        } catch (UnsupportedAudioFileException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            clip.open(ais);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        clip.start();
        JOptionPane.showMessageDialog(null, "BigClip.start()");
        clip.loop(4);
        JOptionPane.showMessageDialog(null, "BigClip.loop(4)");
        clip.setFastForward(true);
        clip.loop(8);
        // the looping/FF combo. reveals a bug..
        // there is a slight 'click' in the sound that should not be audible
        JOptionPane.showMessageDialog(null, "Are you on speed?");
}

当我只使用title1.wav时,我得到这个错误:

java.net.MalformedURLException: no protocol: java.io.BufferedInputStream

当我添加协议file://时,我得到一个NullPointerException,虽然我看不出是什么原因造成的。

我使用了错误的协议,还是我做错了什么?提前致谢!

4

1 回答 1

0

假设您的文件与 Sounds 类位于同一包(“目录”)中,请使用

url = Sounds.class.getResource("title1.wav");

因为

new URL(Sounds.class.getResourceAsStream("title1.wav").toString())

只是注定不工作。您正在调用toStringInputStream 的一个实例。

NPE 可能发生是因为AudioSystem.getAudioInputStreamURL 路径错误导致失败,因此ais为 null 并BigClipopen.

于 2014-11-13T02:23:38.720 回答