我只想执行一项简单的任务。 (我是一个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 视频中有效,并且我使用了相同的代码。请帮忙。再一次,我是新手);
最佳答案
sun
包类应该在编译时引起一些信息警告。留意他们。不要使用该包层次结构中的类。它们没有文档记录,无法保证从一个 Java 版本到下一个版本,并且可能根本无法在非 Oracle JRE 中使用。
而是使用基于 Java Sound 的 Clip
来播放音频。请参阅info. page用于工作示例。
注意
WAV 可能以 Java Sound 不支持的格式进行编码。媒体格式通常是“容器格式”,可以使用任意数量的不同编解码器进行编码。 WAV 很可能在内部使用压缩性更强的编解码器,例如 MP3 或 OGG。
我不知道 OGG 格式的服务提供商接口(interface),但如果它们被编码为 MP3,您也许可以使用 MP3 SPI 使其工作。查看信息。上面链接的页面了解详细信息。
提示
同时更改表单的代码:
catch (Exception e) { ..
至
catch (Exception e) {
e.printStackTrace(); // very informative! ...
关于java - 使用 Sun.audio 在 java 中播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21306950/