最初,我尝试使用其他方式播放wav文件而不使用Clip。但是,当我使用它作为一个线程播放wav文件并将动画图形绘制为另一线程时,图形运行正常,但是wav文件听起来很毛刺。这就是为什么我要使用Clip播放wav文件的原因。但是,我仍然不知道结果如何。
//The first java file
import javax.sound.sampled.*;
public class AudioTest {
public AudioTest() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
System.out.println(classLoader.getResourceAsStream("C:\\audio1.wav"));//to see if the sound file is found
try{
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("C:\\audio1.wav"));
clip.open(inputStream);
clip.start();
while (!clip.isRunning())
Thread.sleep(10);
while (clip.isRunning())
Thread.sleep(10);
clip.close();
} catch (Exception e)
{
System.out.println("something failed");
}
System.out.println("done"); //to see if the sound is finished playing
}
}//No sound was generated when I executed this file
/*--------------------------------------------------------------------*/
//The second java file
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class AudioTest {
public AudioTest() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
System.out.println(classLoader.getResourceAsStream("C:\\audio1.wav"));//to see if the sound file is found
try{
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("C:\\audio1.wav"));
clip.open(inputStream);
clip.start();
clip.close();
} catch (Exception e)
{
System.out.println("something failed");
}
}
}//No sound was generated when I executed this file
/*--------------------------------------------------------------------*/
//The third java file
import java.io.*;
import javax.sound.sampled.*;
public class Test13 {
static String filename = "C:\\audio1.wav";
public static void main(String[] args) {
try
{
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File(filename)));
clip.start();
}
catch (Exception exc)
{
exc.printStackTrace(System.out);
}
}
}//No sound was generated when I executed this file
使用URL获取音频资源时,我获得了最好的结果。
Clip clip;
void makeAudio1Cue()
{
URL url = this.getClass().getResource("audio/" + filename);
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
DataLine.Info info = new DataLine.Info(Clip.class, ais.getFormat());
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(ais);
}
void playAudio1Cue()
{
clip.setFramePosition(0);
clip.start();
}
在这种情况下,音频文件位于包含“ this”类的文件夹的子目录中,名为“ audio”。
如果发布任何收到的错误消息,将很有帮助。