java - 使用 Sun.audio 在 java 中播放音频

标签 java audio media-player javasound sun

我只想执行一项简单的任务。 (我是一个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/

相关文章:

java - 如何将 Java 编译器错误捕获到文件中?

Java if语句有2个条件和通用代码

Java BigInteger 内存分配

android - for循环使用原始音乐数组android

android - 为什么MediaPlayer失败?

java - 无法从 docker 容器连接到在我的主机上运行的 mySql

python-2.7 - 对Numpy + Scipy + matplotlib Spectrum Analyzer代码有些困惑

javascript - Android 版 Chrome 在重放录音时出现错误

multithreading - 有没有比mciSendString更好的播放Mp3的方法了?

c# - 如何在 C# 中播放声音?