如何解决正在运行的.wav音频中显示运行时错误
import java.awt.event.*;
import javax.swing.*;
import javax.sound.sampled.*;
import java.net.URL;
import java.io.*;
class SoundTest
{
public static void main(String[] args) throws Exception
{
URL file = new URL("file:C:/Users/a/Documents/My/baby.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(ais);
JButton button = new JButton("Play Clip");
button.addActionListener( new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
clip.setFramePosition(0);
clip.start();
}
});
JOptionPane.showMessageDialog(null,button);
}
}
javax.sound.sampled.UnsupportedAudioFileException:
Could not get audio input stream from input URL (in javax.sound.sampled.AudioSystem)
请任何人解决我的问题
解决方法
似乎最有可能发生两件事之一(或两者都有!)。一种是文件的寻址不起作用。另一个是该文件是Java不支持的格式。
我会在评论中要求提供信息,但是那里的事情变得很混乱!
您能告诉我们wav文件的格式吗?尝试检查其属性。当然,Java将支持16位,44100 fps,单声道或立体声,小端格式,这是最常见的格式。如果操作系统中的属性不完整,则可以使用Audacity检查属性。如今,有更多文件为24位或32位,48000fps甚至92000fps,而Java尚不支持它们,afaik。
在Freesound.org上,“安全”的测试声音为this thunder clap。您可以在页面右侧的规格中看到它是16位,44100 fps立体声。我会下载它并将其添加到您的程序中,而不是尝试从其网站上播放它。
为帮助测试寻址是否存在问题,我会将声音放在与SoundTest.java文件相同的文件夹中。然后,使用以下行获取文件的URL。
URL url = this.getClass().getResource("soundfilename.wav");
这将在项目文件夹中搜索资源。还有其他用于不同目的的寻址模式,但这应有助于使基本代码正常工作。如果确实需要,可以直接从光盘位置读取程序,方法是在确认您有正常的声音文件后进行处理。
,您输入的URL字符串不正确,请尝试以下操作:
C:\\Users\\a\\Documents\\My\\baby.wav
我还建议您从资源文件夹中而不是从系统上的任何位置读取文件,this博客文章在解释资源方面做得不错。
如果您希望使用一种更简便的方法来访问不同的文件,我发现您正在使用Swing库,因此请考虑使用JFileChooser组件。
编辑:更改的URL路径
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。