播放 Java 中的音频文件
Play audio files in Java
我正在尝试播放一个简单的音频文件,该文件位于 class 文件附近的同一目录中。我尝试了很多来自互联网的例子,但其他的都给我错误,我什至无法理解。
然后我找到了这个,我现在正在使用它。
There are neither compile errors nor runtime errors. But the problem is I cannot hear any noise.
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媒体播放器中播放。
启动音频剪辑不会阻塞 main 方法。所以
clip.start();
开始播放,然后 returns。现在您的主要方法结束,因此 Java 过程结束。没有声音。
如果你这样做
clip.start();
Thread.sleep(20000);
您应该会听到剪辑播放 20 秒。
所以对于一个工作程序来说,只要你想播放剪辑,就必须确保主线程不会结束。
稍等一下,直到音频片段播放。
long audioPlayTime = 1000; //clip duration in miliseconds.
try {
Thread.sleep(audioPlayTime);
} catch (InterruptedException ex){
//TODO
}
我正在尝试播放一个简单的音频文件,该文件位于 class 文件附近的同一目录中。我尝试了很多来自互联网的例子,但其他的都给我错误,我什至无法理解。
然后我找到了这个,我现在正在使用它。
There are neither compile errors nor runtime errors. But the problem is I cannot hear any noise.
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媒体播放器中播放。
启动音频剪辑不会阻塞 main 方法。所以
clip.start();
开始播放,然后 returns。现在您的主要方法结束,因此 Java 过程结束。没有声音。
如果你这样做
clip.start();
Thread.sleep(20000);
您应该会听到剪辑播放 20 秒。
所以对于一个工作程序来说,只要你想播放剪辑,就必须确保主线程不会结束。
稍等一下,直到音频片段播放。
long audioPlayTime = 1000; //clip duration in miliseconds.
try {
Thread.sleep(audioPlayTime);
} catch (InterruptedException ex){
//TODO
}