如何完全加载音频但稍后播放?

时间:2015-05-19 14:55:20

标签: java audio javasound

所以,我有一个AudioInputStream,它从FileInputStream读取。我想关闭FileInputStream关闭AudioInputStream

有没有办法完全加载音频,所以我不必直接从文件中传输音频?

2 个答案:

答案 0 :(得分:1)

您可以将其存储在Java Clip

示例:

Clip clip = AudioSystem.getClip();
clip.open(/*your AudioInputStream*/);

将剪辑设为一个字段,以便稍后使用。

答案 1 :(得分:0)

如果需要AudioInputStream,可以将整个文件加载到字节数组中:

static AudioInputStream load(File file) throws IOException {
    try (FileInputStream in = new FileInputStream(file)) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();

        byte[] buf = new byte[4096];
        for (int b; (b = in.read(buf)) > -1;) {
            bytes.write(buf, 0, b);
        }

        return AudioSystem.getAudioInputStream(
            new ByteArrayInputStream(bytes.toByteArray());
    }
}

或者在Java 7中:

static AudioInputStream load(File file) throws IOException {
    return AudioSystem.getAudioInputStream(
        new ByteArrayInputStream(Files.readAllBytes(file.toPath()));
}