gpt4 book ai didi

java - 我的代码有什么问题,无法播放 wav 文件?

转载 作者:行者123 更新时间:2023-12-01 05:22:40 25 4
gpt4 key购买 nike

我正在尝试使用可用的代码:How can I play sound in Java?但我无法在那里发布问题,因为这是一个新帐户并且只有 1 个信誉。

原始代码:

  public static synchronized void playSound(final String url) {
new Thread(new Runnable() { // the wrapper thread is unnecessary, unless it blocks on the Clip finishing, see comments
public void run() {
try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(Main.class.getResourceAsStream("/path/to/sounds/" + url));
clip.open(inputStream);
clip.start();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}).start();
}

这是我的代码:

package sound_test;
import javax.sound.sampled.*;

public class Main {

public static synchronized void playSound(final String url) {
new Thread(new Runnable() {
public void run() {
try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(Main.class.getResourceAsStream("/path/to/sounds/" + url));
clip.open(inputStream);
clip.start();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}).start();
}

public static void main(String[] args) {
// TODO code application logic here
playSound("C:\\warning_test.wav");
}

}

当我运行代码时,我收到“null”作为输出,并且没有声音发出。我检查了文件名和路径,是正确的。

截图:

http://puu.sh/pkYo

http://puu.sh/pkZl

提前谢谢您。

最佳答案

你可以这样做

AudioInputStream inputStream=AudioSystem.getAudioInputStream(new File(url));

还在click.start()之后添加延迟;即 Thread.Sleep(4000);

或者,如果您想确保它播放整个音频样本,您可以使用一个简单的片段,例如

import javax.sound.sampled.*;
import java.io.File;

public class Main implements LineListener {
private boolean done = false;
public void update(LineEvent event) {
if(event.getType() == LineEvent.Type.STOP || event.getType() == LineEvent.Type.CLOSE) {
done = true;
}
}

public void waitonfinish() throws InterruptedException {
while(!done) {
Thread.sleep(1000);
}
}
public static void playSound(final String url) {

try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(url));
Main control = new Main();
clip.addLineListener(control);
clip.open(inputStream);
clip.start();
control.waitonfinish();

} catch (Exception e) {
System.err.println(e.getMessage());
}
}

public static void main(String[] args) {
// TODO code application logic here
playSound("C:\\warning_test.wav");
}
}

`

关于java - 我的代码有什么问题,无法播放 wav 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135350/

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