gpt4 book ai didi

java - 尝试播放音频 (.wav) 文件时没有声音

转载 作者:行者123 更新时间:2023-11-30 11:17:29 27 4
gpt4 key购买 nike

我有一个非常简单的类,可以使用以下代码播放声音文件:

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Sound{

private Clip sound;

public Sound(String location){

try{
sound = AudioSystem.getClip();
File file = new File(location);
sound.open(AudioSystem.getAudioInputStream(file));
}
catch(IOException | LineUnavailableException | UnsupportedAudioFileException error){
System.out.println(error);
}

}

public void play(){

sound.start();

}

}

但是,当我创建此类的实例并对其调用播放函数时,我听不到任何声音。当声音开始和结束时我听到爆音,但不是实际文件。我也没有收到任何类型的错误。

我做错了什么?

最佳答案

使用它并注意这不是我的代码,它来自这里:How to play .wav files with java我唯一做的就是把它贴在这里并稍微优化一下。

private final int BUFFER_SIZE = 128000;
private AudioInputStream audioStream;
private SourceDataLine sourceLine;
/**
* @param filename the name of the file that is going to be played
*/
public void playSound(String filename){
try {
audioStream = AudioSystem.getAudioInputStream(new File(filename));
} catch (Exception e){
e.printStackTrace();
}
try {
sourceLine = (SourceDataLine) AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, audioStream.getFormat()));
sourceLine.open(audioStream.getFormat());
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
sourceLine.start();
int nBytesRead = 0;
byte[] abData = new byte[BUFFER_SIZE];
while (nBytesRead != -1) {
try {
nBytesRead = audioStream.read(abData, 0, abData.length);
} catch (IOException e) {
e.printStackTrace();
}
if (nBytesRead >= 0) {
@SuppressWarnings("unused")
int nBytesWritten = sourceLine.write(abData, 0, nBytesRead);
}
}
sourceLine.drain();
sourceLine.close();
}

希望对您有所帮助。

关于java - 尝试播放音频 (.wav) 文件时没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317210/

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