【发布时间】:2014-01-23 11:32:37
【问题描述】:
我只想执行一个简单的任务。 (我是一个java新手)。我想在单击按钮时播放音频剪辑。 这是我的代码的一部分(我完全是通过从 Youtube 复制教程来完成的。)
private void btnPlayActionPerformed(java.awt.event.ActionEvent evt) {
InputStream in;
try{
in=new FileInputStream(new File("C:\\Users\\Matt\\Documents\\dong.wav"));
AudioStream timeupsound=new AudioStream(in);
AudioPlayer.player.start(timeupsound);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
但问题是,这行不通。 它抛出并 IOException 说:“无法从输入流创建音频流”。 我的问题是,我做错了什么? (因为我清楚地看到该代码在该 youtube 视频中有效,并且我使用了相同的代码。请帮助。再次,我是新手);
【问题讨论】:
-
谢谢。我去看看。
-
@Andrew,是的。你说的对。这是wav文件的问题。不是代码。我用几个 wav 文件对其进行了测试,它只适用于其中一个。
-
我将 cmets 计算为一个可能会让您走得更远的答案。
-
我发现如果 wav 文件不是 16 位,而是 24 位或 32 位编码,Java 会出现问题。另一个常见的“问题”是字节顺序。 Java 可能更喜欢 little-endian,但我可能是错的,Java 实际上可能同时支持 little-endian 和 bit-endian(但并非适用于所有编码或速率)。还支持一些低于 44100 fps 的 fps 速率,但并非所有这些都可以找到。对我来说最常见的挂断是 24 位和 32 位,而不是 16 位。
标签: java audio media-player javasound sun