java - getAudioInputStream 格式无效,尝试在 Java 中播放声音

标签 java audio wav javasound clip

我正在尝试在 Java 中播放基本声音...

这是我的代码,基于在各个论坛上找到的代码:

    Clip clip = null;

    try {
        clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(url));
        clip.open(inputStream);
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) {
        Logger.getLogger(Pomodoro.class.getName()).log(Level.SEVERE, null, ex);
    }

    return clip;

我检查过:new File(url).exists();返回 true,我检查文件类型确实是音频 WAV (audio/x-wav),我检查另一个文件是否仍然存在问题...我不明白我做错了什么。

错误:

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalArgumentException: Invalid format
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453)

救命!

最佳答案

我终于找到了与我的问题重复的内容。抱歉打扰您了。

AudioInputStream is not working

我的代码变成:

    Clip clip = null;

    try {
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(url));
        DataLine.Info info = new DataLine.Info(Clip.class, inputStream.getFormat());
        clip = (Clip)AudioSystem.getLine(info);
        clip.open(inputStream);
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) {
        Logger.getLogger(Pomodoro.class.getName()).log(Level.SEVERE, null, ex);
    }

    return clip;

尽管如此,我还是很惊讶我以前的代码不起作用。有时,我对 Java 感到非常绝望......

关于java - getAudioInputStream 格式无效,尝试在 Java 中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833342/

相关文章:

audio - 如何在J2ME中通过扬声器播放音频

audio - 在浏览器中播放 wav 文件的最佳方式?

java - 仅在源代码级别 1.8 或更高版本中才允许引用接口(interface)静态方法

java - 当您尝试将 LinkedList 转换为 LinkedList<String> 时,编译时会发生什么?

c++ - 如何在 C++ 中使用 ffmpeg 从视频中提取音频?

java - 如何用java编写FLAC文件

python - 如何在Python中以8位编码16位WAV文件?

java - 如何迭代条件生成的列表?

java - jparsec 中的困惑

javascript - 在浏览 HTML 页面时保持音频播放器持续/连续播放