gpt4 book ai didi

multithreading - 我想使用Clip来用Java播放wav文件,但是三个Java文件都没有工作

转载 作者:行者123 更新时间:2023-12-03 01:28:37 25 4
gpt4 key购买 nike

第一个文件:没有声音产生。

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
}
}
第二个文件:没有声音。
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");
}
}
}
第三个文件:没有声音。
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);
}

}
}
问题是执行上述三个文件中的任何一个时都没有声音产生。但是,现在我找到了解决此问题的最佳方法,方法是使用File SoundFile = new File(“src // audio1.wav”);

最佳答案

使用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”的子目录中。

如果您发布收到的任何错误消息,将很有帮助。

关于multithreading - 我想使用Clip来用Java播放wav文件,但是三个Java文件都没有工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59075476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com