java - 如何使用Java播放wav文件?

标签 java wav

我想播放一个 wav 文件,在谷歌搜索后我找到了这个脚本,但它不起作用。 (没有抛出任何异常,也没有编译问题)

 import java.io.File;
 import films.Film;
 import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.Clip;

 public class MusicStorage {

 /**
 * Opens a wav file and plays it
 * @param args
 */
public void play(Film song) {
    try {
        Clip sound = AudioSystem.getClip();

        sound.open(AudioSystem.getAudioInputStream(new File(song.getClip())));

        sound.start();

        while (sound.isRunning())
            Thread.sleep(1000);

        sound.close();
    } catch (Exception e) {
        System.out.println("Whatever" + e);
    }
  }
}

import audio.MusicStorage;
import films.Film;

public class Aplication {

private static Film gladiator = new Film("Gladiator", "gladiator.wav");
private static MusicStorage storage = new MusicStorage();

public static void main(String[] args) {
    storage.play(gladiator);
}
}

public class Film {

private String name;
private String clip;

public Film(String name, String clip) {
    this.name = name;
    this.clip = clip;
}

public String getClip() {
    return clip;
}

public String getName() {
    return name;
}
}

我已经添加了所有的代码,所以我希望它能清楚地解决我的问题

最佳答案

只需从代码中删除 while 循环,它就应该被修复。 while 循环使线程 hibernate ,因此无法播放音频文件。

public void play(Film song) {
    try {
        Clip sound = AudioSystem.getClip();

        sound.open(AudioSystem.getAudioInputStream(new File(song.getClip())));

        sound.start();

    } catch (Exception e) {
        System.out.println("Whatever" + e);
    }
  }
}

关于java - 如何使用Java播放wav文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085830/

相关文章:

audio - 使用 ffmpeg 将 WAV 文件的两个 channel 拆分为单独的立体声文件

Java Jpanel 仅在完成代码后更新

javafx单击其他节点时不会失去焦点

Java 使用带有列表和接口(interface)的泛型

java - 在 Java 中播放 .mp3

c++ - 如何使用 curl c++ 源发布 wav 文件数据,如何使用 --data-binary 和 c++?

c# 将短数组从单声道 wav 文件转换为短数组以写入立体声 wav

matlab - MATLAB中的最佳提取

java - 这个方法jboolean(JNICALL *ExceptionCheck)(JNIEnv *env)在哪里定义的?

java - 为什么 Collections.sort 使用相同的参数调用 Comparator 两次?