【问题标题】:Playing a song in java [duplicate]用java播放歌曲[重复]
【发布时间】:2014-12-01 14:36:39
【问题描述】:

我想在玩游戏时播放计算机上的音频片段。但我只能使用非常非常短的声音。有没有类似我播放音效的歌曲播放方式?

如果这很重要,我会在游戏中使用挥杆图形。

我尝试使用歌曲时遇到的错误 "javax.sound.sampled.UnsupportedAudioFileException: 无法从输入文件中获取音频输入流"

public static void main(String args[]) {

Sound s = new Sound();
s.playSound("C:/Users/isac/Desktop/banjos.wav");
}
}


public void playSound(String file) {
    try {
        AudioInputStream audio = AudioSystem.getAudioInputStream(new File(
                file));
        Clip clip = AudioSystem.getClip();
        clip.open(audio);
        clip.start();
    }

    catch (UnsupportedAudioFileException uae) {
        System.out.println(uae);
    } catch (IOException ioe) {
        System.out.println(ioe);
    } catch (LineUnavailableException lua) {
        System.out.println(lua);
    }
}

}

【问题讨论】:

标签: java eclipse audio javasound


【解决方案1】:

您收到的错误消息表明问题可能出在文件的格式上,而不是文件的长度上。

您可以通过查看音频文件的属性来检查音频文件的格式——通常需要在 Windows 上单击鼠标右键。重要的属性可能位于“高级”选项卡上。 Java 可以读取多种格式,但我最常看到它挂起的地方是:

  1. 有人尝试加载 .mp3 或 .ogg 或其他形式的压缩文件,但尚未实现任何可以解压缩这些文件的库(不是您的情况,因为您的 banjo.wav 是 wav)。

  2. .wav 不是标准的“CD 质量”格式(44100 fps,16 位编码,立体声),而是类似于 24 位或 32 位编码或 48000 或 96000 fps 的格式。

当前的 DAW 通常可以轻松地以优于“CD 质量”的格式进行录制,但 Java 尚不支持它们。

在大多数情况下,如果您不使用其他家庭工作室程序工作,您可以将使用 Java 无法读取的音频文件转换为使用 Audacity(免费)的音频文件。请小心获取 Audacity,因为某些提供 Audacity 的网站(官方网站除外)会包含广告软件、恶意软件或病毒。

附带说明,对于较长的文件,最好加载到 SourceDataLine 中进行播放,而不是 Clip。使用 SourceDataLine,您不必等待整个文件加载完毕后才开始播放,而且它不会占用任何内存。 Java 教程有一个 Java 声音部分和一个专门用于播放的页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多