如何从InputStream转换为AudioInputStream

2024-04-05

是否可以从 InputStream 转换为 AudioInputStream?

我想在某些事件中播放小声音文件,所以我做了以下 SoundThread

import java.io.*;
import javax.sound.sampled.*;

public class SoundThread implements Runnable{

    private String filename;

    SoundThread(String filename) {
        this.filename = filename;
    }

    public void run() {
        try {
            InputStream in = ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");
            Clip clip = AudioSystem.getClip();
            clip.open((AudioInputStream)in);
            clip.start();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (LineUnavailableException e){
            e.printStackTrace();
        } 
    }
}

我运行它

new Thread(new SoundThread("nameOfTheSoundFile")).start();

一开始我用 sun.audio.AudioPlayer 和 sun.audio.AudioStream 处理它,但是当我将该代码放入 eclipse 中时,它显示了错误。所以我尝试了

AudioInputStream in = (AudioInputStream)ClassLoader.getSystemResourceAsStream("sounds/"+filename+".wav");

将 InputStream 转换为 AudioInputStream (eclipse 没有显示任何错误),但运行它会抛出 ClassCastException。这个问题有什么解决办法吗?


Use the AudioSystem得到一个AudioInputStream直接从URL到资源。

URL url = ClassLoader.getResource("/sounds/"+filename+".wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
Clip clip = AudioSystem.getClip();
clip.open(ais);

也可以看看AudioSystem.getAudioInputStream(InputStream) http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/AudioSystem.html#getAudioInputStream%28java.io.InputStream%29但这“更危险”。 Java Sound 通常需要可重新定位的输入流。由于某种我不太清楚的原因,Class.getResourceAsStream()变体有时会返回一个non-可重新定位的流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从InputStream转换为AudioInputStream 的相关文章

随机推荐

  • 受保护的内部类在类内工作但不在类外工作

    我尝试了一些事情 想知道为什么会这样 假设我在命名空间 n 中有一个名为 A 的类 我试图创建受保护的内部类 B namespace n public class A public A protected internal class B
  • 使用 Mockito 动态返回值

    通常在编译时定义 Mockito 模拟的返回值 即静态地 MyClass myClass Mockito mock MyClass class when myClass myMethod thenReturn 0 100 200 有没有办法
  • 查找具有其他字符串的所有字符的子字符串的最小长度的算法

    我有两个字符串 字符串1 hello how are you 字符串2 olo 包括空格字符 Output lo ho hello ho你是谁 lo ho是唯一包含 string2 的所有字符的子字符串 任何人都可以为此提出一个好的算法 我
  • 什么是 AWT-Windows 线程?

    当我使用 AWT 时 在调用Toolkit getDefaultToolkit 我已经打印了程序中当前正在运行的线程 我想知道那是什么AWT Windows在后台运行的线程 它有什么作用以及为什么有6优先事项 另外 该行 Thread AW
  • 动态句子中的单词倒序

    我有几个这样的标签 a class classCover href 1 Comment a 我想颠倒一下单词的顺序 Comments 1 我的功能是这样的 但不起作用 classCover each function this text s
  • HSQLDB / Spring 单元测试不回滚

    我正在使用 Spring 的嵌入式数据库 默认数据库是 HSQLDB 来运行一些单元测试 我的情况如下
  • 无权在 mongodb 上查询 admin.system.namespaces

    我启动一个新的 mongo 实例 创建一个用户 对其进行授权 但是当我运行 show collections 时 系统说该 id 未授权 我不知道为什么 mongo admin MongoDB shell version 2 4 3 con
  • 将 Autofac 添加到 WPF MVVM 应用程序

    我似乎无法找到解决这个问题的方法 我已经看到了几个与此相关的问题 但没有一个真正给我解决方案 我对 Autofac 完全陌生 并没有真正做过太多 WPF MVVM 但了解基础知识 我有一个 WPF 应用程序 使用 ModernUI for
  • ASP.NET Core MVC 相当于启动操作特定页面

    In ASP NET Webforms or ASP NET MVC项目中 我可以在按F5进行调试时选择浏览器中正在调用的页面 路由 如下图所示 相当于什么ASP NET Core MVC 我在用着IIS Express with SSL用
  • 错误:如果没有列“date_time”(在分区中使用),则无法创建唯一索引

    我刚开始使用时间刻度数据库 https www timescale com 与 postgresql 我有一个名为storage db其中包含一个名为day ahead prices 安装 timescaledb 后 我正在关注从同一个 p
  • angularjs从json文件中获取ng-repeat数据非常慢

    我有一个 json 文件 其中包含大约 8000 个联系人 使用 ng repeat 使用 angularjs 获取所有数据需要很长时间 有解决办法吗 检索如此大的记录时 您不能期望有很高的速度 您可以使用以下方法优化 ng repeat
  • 我的线程可以帮助操作系统决定何时将其上下文切换吗?

    我正在 Linux 上用 C 开发一个线程应用程序 它试图实现实时 根据心跳执行操作 或者尽可能接近实时 在实践中 我发现操作系统正在交换我的线程 并导致切换时延迟长达十分之一秒 从而导致心跳不规则 有没有一种方法可以让我的线程向操作系统暗
  • 在 Visual Studio Code 中调试 C++ 时如何读取输入?

    我在用着VSCode用于调试我的CPP程序在MacOSX 我有2个程序 Program1 int main string a a a a b cout lt
  • 如何:仅 100% 高度表滚动 tbody

    是否可以使用 CSS 滚动 100 高度表格的内容而不是标题 并且仅将滚动条显示到 tbody 内容的一侧而不是标题行 谢谢 我希望现在还不算太晚 你还活着 从那时起事情已经有了很大的改善 您可以使用 table display inlin
  • 如何在仅标头库中拥有静态数据成员? [复制]

    这个问题在这里已经有答案了 在非模板化库类中拥有静态成员的最佳方法是什么 而不将定义成员的负担强加给类用户 假设我想提供这个课程 class i want a static member static expensive resource
  • js中的parcel和全局变量

    我有一个简单的 HTML 文件 其中包含一些简单的 javascript 文件 没有框架 没有模块 有一个主 JS 文件和其他 JS 文件中的辅助函数 当我将其作为静态站点打开时 一切正常 一个文件中的 JS 代码能够调用另一文件中定义的函
  • MongoDB从子文档中删除子文档

    我使用 MongoDB 的 10gen C 驱动程序 我想从子文档中删除子文档 我不知道该怎么做 这是我的文档的示例 id binary stuff Name MyApplication Settings id binary stuff K
  • 带有子元素的 Solr 文档?

    是否可以以某种方式创建包含子元素的 solr 文档 例如 我将如何表示这样的事情
  • Rails 3 与成员的路由错误

    我在 Rails 3 中有以下路线 resources jobs do member do post seller job submitted end end 以及下面的表格 form for job url gt seller job s
  • 如何从InputStream转换为AudioInputStream

    是否可以从 InputStream 转换为 AudioInputStream 我想在某些事件中播放小声音文件 所以我做了以下 SoundThread import java io import javax sound sampled pub