我可以从NetBeans中的Java包调用.mp3或.wav文件吗?

时间:2014-11-14 23:31:25

标签: java audio netbeans

我的朋友让我创建了一个可以与Plague Inc一起使用的应用程序,他希望游戏中的音轨能够在应用程序中播放。在做网络研究时,我已经尝试了一切,没有任何作用。是否可以从java包中调用音轨(如图像)而不是指定文件夹目录和URL?我在网上找到了一些有希望的信息,但是当我尝试运行代码后,AudioInputStream继续给我错误。我已经尝试使用子句异常,但与main方法严重冲突,应用程序甚至不会运行。我已经尝试将编码放在构造函数中,一个新方法,甚至在main方法本身,但是当我运行应用程序时,所有这些都只是抛出错误(我甚至不知道在哪里放置它以便它可以工作) 。请帮助,因为这会让我感到非常沮丧。

我的包名为Sound,文件名为plague.wav 虽然游戏是Android游戏,但我的应用程序是在Windows PC上运行的

这是我到目前为止的编码:

File sound = new File("/Sound/plague.wav");
            AudioInputStream audioIn = AudioSystem.getAudioInputStream(sound);
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
        } catch (LineUnavailableException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedAudioFileException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        }

1 个答案:

答案 0 :(得分:1)

您可以将其作为资源流获取 检查一下:

       InputStream input = getClass().getResourceAsStream("/Sound/plague.wav");
       AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
        } catch (LineUnavailableException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedAudioFileException ex) {
            Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
        }

这是一个示例类:

import java.io.IOException;
import java.io.InputStream;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

public class Snippet {

    public static void main(String[] args) throws Exception {
        try {

            InputStream input = Snippet.class.getResource("/Sound/sound.wav")
                    .openStream();
            AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
            Clip clip = AudioSystem.getClip();
            clip.open(audioIn);
            clip.loop(Clip.LOOP_CONTINUOUSLY);

            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    // A GUI element to prevent the Clip's daemon Thread
                    // from terminating at the end of the main()
                    JOptionPane.showMessageDialog(null, "Close to exit!");
                }
            });
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}