Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中播放wav文件_Java_Audio - Fatal编程技术网

在java中播放wav文件

在java中播放wav文件,java,audio,Java,Audio,我试着为我的游戏制作音效,但我还没来得及玩它。 我到处都查过,但每次我试图做我看到的事情时,我总是有这样的错误: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) at pong.Pong.loadResou

我试着为我的游戏制作音效,但我还没来得及玩它。 我到处都查过,但每次我试图做我看到的事情时,我总是有这样的错误:

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at pong.Pong.loadResources(Pong.java:114)
at pong.Pong.<init>(Pong.java:69)
at pong.Pong.main(Pong.java:34)

为了确定,我将同一个命名的wav文件直接放在项目文件夹、src文件夹和res文件夹下。顺便说一句,我想从res文件夹打开它,但我要做的第一件事就是修改代码来播放声音。然后我可以使用路径声明。任何帮助都将不胜感激

试试这样的方法:

    File file = new File("clip.wav");
    if(file.exists()) {
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);

            AudioFormat audioFormat = audioInputStream.getFormat();

            DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);

            SourceDataLine sourceLine = (SourceDataLine) AudioSystem.getLine(info);
            sourceLine.open(audioFormat);

            sourceLine.start();

            int nBytesRead = 0;
            byte[] abData = new byte[128000];
            while (nBytesRead != -1) {
                try {
                    nBytesRead = audioInputStream.read(abData, 0, abData.length);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (nBytesRead >= 0) {
                    sourceLine.write(abData, 0, nBytesRead);
                }
            }

            sourceLine.drain();
            sourceLine.close();

        } catch (UnsupportedAudioFileException | IOException e) {
            e.printStackTrace();
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        }
    } else {
        System.err.println("The selected file doesn't exist!");
    }
它很好用。 如果您使用的是Eclipse(我不知道它如何与其他IDE协同工作),请确保将文件放在项目的根文件夹中


问题的解决方案。

尝试以下方法:

    File file = new File("clip.wav");
    if(file.exists()) {
        try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);

            AudioFormat audioFormat = audioInputStream.getFormat();

            DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);

            SourceDataLine sourceLine = (SourceDataLine) AudioSystem.getLine(info);
            sourceLine.open(audioFormat);

            sourceLine.start();

            int nBytesRead = 0;
            byte[] abData = new byte[128000];
            while (nBytesRead != -1) {
                try {
                    nBytesRead = audioInputStream.read(abData, 0, abData.length);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (nBytesRead >= 0) {
                    sourceLine.write(abData, 0, nBytesRead);
                }
            }

            sourceLine.drain();
            sourceLine.close();

        } catch (UnsupportedAudioFileException | IOException e) {
            e.printStackTrace();
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        }
    } else {
        System.err.println("The selected file doesn't exist!");
    }
它很好用。 如果您使用的是Eclipse(我不知道它如何与其他IDE协同工作),请确保将文件放在项目的根文件夹中


问题的解决方案。

尝试输入
System.out.println(新文件(“score.wav”).exits())System.out.println(新文件(“score.wav”).exits()中的地方在你的代码中,我怀疑该文件不存在,你认为它不存在。我也尝试过该解决方案,但它不起作用,但我通过你使用的操作系统和java的哪个版本得到相同的错误异常?@TolgaŞen还尝试其他wav文件,可能你的文件已损坏。我使用windows8.1和java7,当我尝试使用其他文件时,它仍然抛出相同的错误。我想这个文件没有问题,我使用的是“java8 update 73”,代码运行良好,我不知道,但可能是java版本的错误,如果可以的话,尝试更新java。我也尝试过这个解决方案,但它不起作用,但我还是通过你使用的操作系统和java的哪个版本得到了相同的错误异常?@TolgaŞen也尝试使用其他wav文件,可能你的文件已损坏。我使用windows8.1和java7,当我尝试使用其他文件时,它仍然抛出相同的错误。我想我使用的文件“java8 update 73”没有问题,代码运行良好,我不知道,但可能是java版本的错误,如果可以的话,尝试更新java。