0

我正在尝试播放一个简单的音频文件,该文件位于类文件附近的同一目录中。我尝试了许多来自互联网的示例,但所有其他示例都给了我我什至无法理解的错误。

然后我找到了这个,我现在正在使用它。

既没有编译错误,也没有运行时错误。但问题是我听不到任何噪音。

import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

class A{
    public static void main (String[]args){
        try {
                AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("abc.wav").getAbsoluteFile());
                Clip clip = AudioSystem.getClip();
                clip.open(audioInputStream);
                clip.start();
            } catch(Exception ex) {
                System.out.println("Error with playing sound.");
            }
    }
}

截屏

请注意,我的系统音量为 80%,音频文件在 VLC 媒体播放器中播放。

4

2 回答 2

2

启动音频剪辑不会阻塞 main 方法。所以

 clip.start();

开始播放然后返回。现在您的 main 方法结束,因此 Java 进程结束。没有声音。

如果你这样做

 clip.start();
 Thread.sleep(20000);

您应该听到剪辑播放 20 秒。

因此,对于一个工作程序,只要您想播放剪辑,就必须确保主线程不会结束。

于 2015-12-30T18:10:52.350 回答
0

保持线程一段时间,直到音频剪辑播放。

long audioPlayTime = 1000; //clip duration in miliseconds.
try {
           Thread.sleep(audioPlayTime);
} catch (InterruptedException ex){
            //TODO
}
于 2017-04-03T12:11:27.563 回答