Java 声音 .WAV 格式
Posted
技术标签:
【中文标题】Java 声音 .WAV 格式【英文标题】:Java Sound .WAV format 【发布时间】:2016-01-28 18:26:38 【问题描述】:我知道这个问题已经被问过几次关于声音的问题,相信我,我已经仔细研究过,试图找出自己的答案。我之前在另一个项目中使用 Java 时有声音,使用它没有任何困难:
public void playWelcome ()
try
InputStream inputStream =
getClass().getResourceAsStream("Start.wav");
Audiostream audioStream = new AudioStream(inputStream);
AudioPlayer.player.start(audioStream);
catch(IOException ioException)
ioException.printStackTrace();
System.out.println("Unable to Find WAV/Start FIle");
显然,这在之前不起作用,所以我尝试使用:
public void uploadDownload()
try
AudioInputStream audioInputStream =
AudioSystem.getAudioInputStream(new
File("/DaWord/src/resources/upload.wav").getAbsoluteFile());
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
catch(Exception ex)
System.out.println("Error with playing sound.");
ex.printStackTrace();
注意:我也试过不带斜线的文件。例如'我的文件.wav' 有人能帮帮我吗?
更新:
所以我已经设法让它开始了......有点:
文件 soundFile = new File("/Users/myname/DaWord/src/testing.wav");
AudioInputStream audioIn =
AudioSystem.getAudioInputStream(soundFile);
// Get a sound clip resource.
Clip clip = AudioSystem.getClip();
// Open audio clip and load samples from the audio input stream.
clip.open(audioIn);
clip.start();
但是有没有人知道如何通过不提供绝对路径来做到这一点?我曾尝试使用 .absoulutePath();在文件的末尾,例如:文件
file = new File ("sound.wav").absouloutePath();
【问题讨论】:
您是否尝试过仅使用:File AudioSystem.getAudioInputStream(new File("/DaWord/src/resources/upload.wav"))? 嘿,刚刚试过这个,它没有继续在输出中得到一个空指针异常.. 谢谢你。 【参考方案1】:正如here 解释的那样,这是分配从文件或 URL 管道传输的 AudioInputStream 的方法:
// from a wave File
File soundFile = new File("eatfood.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
// from a URL
URL url = new URL("http://www.zzz.com/eatfood.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
// can read from a disk file and also a file contained inside a JAR (used for distribution)
// recommended
URL url = this.getClass().getClassLoader().getResource("eatfood.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
【讨论】:
如果您不希望文件相对于类被解析,请使用getClass().getClassLoader().getResource(...)
,由getClass().getResource()
解析的资源将(如果没有前导斜杠)相对于指定类进行解析。
我刚刚尝试了 from wav 和 Url 方法...由于某些奇怪的原因仍然无法正常工作我不断收到空指针异常.. 我已经了解了所有明显的问题,例如导入用于文件 IO 以及确保实际文件在类/资源中并播放它以确保没有任何奇怪的事情发生并且它很好,很奇怪【参考方案2】:
这暂时有效...使用完整路径
文件 soundFile = new File("/Users/mrBerns/NetBeansProjects/DaWord/src/ching.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
// Get a sound clip resource.
Clip clip = AudioSystem.getClip();
// Open audio clip and load samples from the audio input stream.
clip.open(audioIn);
clip.start();
【讨论】:
以上是关于Java 声音 .WAV 格式的主要内容,如果未能解决你的问题,请参考以下文章
Android SoundPool 不播放 wav 格式的声音
火狐浏览器 兼容的音频格式是啥? wav格式在ie里有声音,火狐里没声音,ogv格式的,在火狐里同样没声音