如何用java播放.wav文件

2024-01-15

我正在尝试用 Java 播放 *.wav 文件。我希望它执行以下操作:
按下按钮时,会发出短促的蜂鸣声。

我用谷歌搜索了一下,但大部分代码都不起作用。有人能给我一个简单的代码片段来播放 .wav 文件吗?


最后我设法做到了以下几点并且效果很好

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

public class MakeSound {

    private final int BUFFER_SIZE = 128000;
    private File soundFile;
    private AudioInputStream audioStream;
    private AudioFormat audioFormat;
    private SourceDataLine sourceLine;

    /**
     * @param filename the name of the file that is going to be played
     */
    public void playSound(String filename){

        String strFilename = filename;

        try {
            soundFile = new File(strFilename);
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

        try {
            audioStream = AudioSystem.getAudioInputStream(soundFile);
        } catch (Exception e){
            e.printStackTrace();
            System.exit(1);
        }

        audioFormat = audioStream.getFormat();

        DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
        try {
            sourceLine = (SourceDataLine) AudioSystem.getLine(info);
            sourceLine.open(audioFormat);
        } catch (LineUnavailableException e) {
            e.printStackTrace();
            System.exit(1);
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

        sourceLine.start();

        int nBytesRead = 0;
        byte[] abData = new byte[BUFFER_SIZE];
        while (nBytesRead != -1) {
            try {
                nBytesRead = audioStream.read(abData, 0, abData.length);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (nBytesRead >= 0) {
                @SuppressWarnings("unused")
                int nBytesWritten = sourceLine.write(abData, 0, nBytesRead);
            }
        }

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

如何用java播放.wav文件 的相关文章

  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • Web 服务客户端的 AXIS 与 JAX-WS

    我决定用Java 实现Web 服务客户端 我已经在 Eclipse 中生成了 Axis 客户端 并使用 wsimport 生成了 JAS WS 客户端 两种解决方案都有效 现在我必须选择一种来继续 在选择其中之一之前我应该 考虑什么 JAX
  • 按钮悬停和按下效果 CSS Javafx

    我是 CSS 新手 为按钮定义了以下 CSS 样式 其中id并且应用了自定义样式 但不应用悬停和按下效果 bevel grey fx background color linear gradient f2f2f2 d6d6d6 linear
  • 在Java内存管理中,“PS”代表什么?

    每当我看到 Java 中对内存的引用时 各种空格总是以 PS 为前缀 PS 是什么意思 它开始困扰我 到目前为止我唯一的猜测是 泳池空间 但这将是多余的 例子 PS伊甸园空间 PS 幸存者空间 PS 终身空间 老一代 PS Perm Gen
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • java中什么是静态接口?

    我正在阅读Map Entry界面 当我注意到它是一个static界面 我不太明白什么是静态接口 它与常规接口有什么不同 public static interface Map Entry
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr
  • removeall 和removeif 的用例

    我找到了这个 fun main val list MutableList
  • Java ByteBuffer 性能问题

    在处理多个千兆字节文件时 我注意到一些奇怪的事情 似乎使用文件通道从文件读取到使用 allocateDirect 分配的重用 ByteBuffer 对象比从 MappedByteBuffer 读取要慢得多 事实上它甚至比读取到字节还要慢使用
  • OnClickListener 无法解析为类型(Eclipse)

    你好 我是编程新手 我正在尝试构建我的第一个简单应用程序 我希望在按下 ImageButton 时播放一个简短的声音剪辑 在输入我的代码时 我收到语句错误 Button setOnClickListener new OnClickListe
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • 调整巨大数组的大小

    我正在我的应用程序中处理巨大的数组 需要调整它们的大小 假设您有一个 2Gb 的阵列 并且想要将其大小调整为 3Gb 有没有办法在暂时不需要 5Gb 的情况下调整它的大小 例如 给定一个 1Gb 堆 使用 Xmx1G flag public
  • 放置 时覆盖引导程序的托管版本 3.2.0

    当我把
  • 使用 API 将文件上传到 Google 云端硬盘并出现错误 403

    我想将 zip 文件上传到 Google 云端硬盘 我使用 Java 快速入门 https developers google com drive v3 web quickstart java https developers google
  • Java 8 流中的 JUnit 断言

    假设我将三个对象保存到数据库中并将数据库生成的 ID 设置为其中 我不知道从方法返回的对象的顺序saveToDb 但我想测试这些生成的 ID 是否存在 我如何在流中做到这一点 我想做这样的事情 List
  • 检测文本字段溢出

    假设我有一个 PDF 文档 其中的文本字段定义了某种字体和大小 有没有办法确定某些文本是否适合字段矩形内PDFBox 我试图避免文本未完全显示在字段内的情况 因此 如果给定字体和大小的文本溢出 我想将字体大小更改为Auto 0 此代码重新创
  • Spring Security 3.0 中 security-role-ref 和 role-link 的等效项是什么?

    我正在将带有 web xml 安全约束 安全角色和登录配置的标准 Web 应用程序移植到 Spring Security 3 0 我在 web xml 中找到了几乎所有功能的等效映射 security role ref 元素除外 我不想指定
  • 雅虎商店订单 API 访问

    我花了很长时间试图弄清楚 Yahoo Store API 的内容 我在互联网上搜索了一些例子 但几乎什么也没找到 我已经创建了我的请求 String data data data
  • 在 C# 中遍历 ANTLR AST 的教程?

    有人知道在 C 中遍历 ANTLR 生成的 AST 的教程吗 我能找到的最接近的是this https web archive org web 20201019210638 http www manuelabadia com blog Pe

随机推荐

  • 无法让 JQuery 在母版页中工作

    我有一个没有母版页的表单中的示例 jquery 它工作正常 我试图在我的母版页中使用相同的功能 但它不起作用 我正在使用 ASP NET 这是我的代码 WebForm 这有效
  • 为什么要让用户在 PayuMoney 网关的 android SDK 中登录?

    我正在尝试集成适用于 Android 的 PayUMoney SDK 并成功将 SDK 添加到我的应用程序中 当用户单击支付按钮时 将打开登录页面 为什么要让用户登录 创建 payu 帐户 一旦用户按下支付按钮 支付选项就会打开 但事实并非
  • NSPredicate 中 ALL 、 ANY 和 SOME 运算符之间的区别

    我真的很难理解这 3 个 看起来像ANY and SOME做同样的事情 但我看不出有什么区别ALL 让我们有一个组列表 每个团体都有人类型的成员 每个人都有一个年龄 所有会员年龄 gt 30 意味着您将找到一个成员全部年龄超过 30 岁的群
  • Django unique_together 与可为空的外键

    我在使用 Sqlite 的开发机器中使用 Django 1 8 4 并且有以下模型 class ModelA Model field a CharField verbose name a max length 20 field b Char
  • 搜索自然语言句子结构

    存储和搜索自然语言句子结构树数据库的最佳方式是什么 Using OpenNLP 的 http incubator apache org opennlp 英语树库解析器 我可以对任意句子进行相当可靠的句子结构解析 我想做的是创建一个工具 可以
  • UserProfile 状态在 bot v4 中的用户之间保持不变

    当我有两个机器人实例时 如果我将机器人部署到 Azure 则可以是两个模拟器窗口或两个浏览器 输入的第一个名称对于所有其他实例都是持久的 实例一 https i stack imgur com WsPw7 jpg https i stack
  • 将spawn()的stdout/stderr重定向到Ruby中的字符串

    我想使用spawn 对于多个并发子进程 在Ruby 中执行外部进程 并将stdout 或stderr 收集到一个字符串中 这与使用Python 的子进程Popen communicate 可以完成的方式类似 我尝试将 out err 重定向
  • ReadableByteChannelImpl 如何处理中断

    我正在尝试使用Channels newChannel包装输入流以支持中断 我看到了关于这是否有效的相互矛盾的信息 包括 ReadableByteChannelImpl 中的注释 Not really interruptible In Rea
  • 带有字符串键的 Lua 表不能使用数字索引?

    我是 Lua 的初学者 我认为使用字符串键将值推送到表中也会自动执行数字索引 但我认为我错了 我的代码 local t t name John t age 30 print Name t name nAge t age 虽然这段代码运行良好
  • 使用 css 3d 转换后如何修复 Safari 5 Mac OS X 中的脆文本?

    当应用 css 3d 变换的元素之后 相对和绝对定位的元素触发奇怪的行为时 我遇到了问题 为了解决这个问题 我必须设置背景颜色 但是如果我需要透明度怎么办 这是重现该错误的最低限度 http jsfiddle net 8VABq 3 htt
  • 如何获取 DD-MM-YYYY 格式的日期

    我正在使用 Parse 数据库 我存储日期格式 使用控制台时我得到这种格式 Tue Jul 18 2017 15 46 47 GMT 0100 CET 我想获得这种格式 18 07 2017 有什么想法请 可以使用以下代码来完成 let t
  • 抓取屏幕分辨率并根据大小显示结果

    我正在尝试根据屏幕分辨率大小显示数据库的结果 我上周发布了一个关于如何获取宽度的问题 并且能够在此处的一些想法的帮助下提出这个jquery 但无法完成第二个方面 即根据大小显示结果
  • 您正在使用遗留实现。请更新您的代码:使用createWrapper() 和wrapper.useWrappedStore()。 nextjs 还原?

    我在使用 redux 工具包和 next js 时遇到错误 我面临着这个遗留警告 You are using legacy implementaion Please update your code use createWrapper an
  • 填充 NaN 值

    我有一个数据框 TIMESTAMP P ACT KW PERIODE TARIF P SOUSCR 2016 01 01 00 00 00 116 HC 250 2016 01 01 00 10 00 121 HC 250 2016 01
  • doc.save() 与 jspdf 抛出错误

    当我尝试使用 jsPDF 的 save 函数时 它抛出以下错误 ReferenceError saveAs 未定义 我只是尝试一个非常简单的例子 var doc new jsPDF doc text 20 20 Hello world do
  • 什么是类型和效果系统?

    The 维基百科文章关于效果系统 http en wikipedia org wiki Effect system目前只是一个简短的存根 我有一段时间想知道什么是效果系统 除了类型系统之外 是否还有其他语言还具有效果系统 可能的 假设的 符
  • 在运行时枚举 .NET 程序集资源

    我有一个资源程序集 其中包含使用构建的图像文件Resource or Content建立行动 这使得可以使用 Uris 访问这些文件 但是我找不到枚举此类资源的方法 如果我将构建操作设置为嵌入式资源可以使用以下代码枚举文件 string r
  • 使用 GADT 在 Haskell 中重新创建 Lisp 的“apply”

    作为练习 我正在尝试重新创建 Lispapply在哈斯克尔 我不打算将其用于任何实际目的 我只是认为这是一个更好地熟悉 Haskell 类型系统和一般类型系统的好机会 所以我也不是在寻找其他人的实现 我的想法如下 我可以使用 GADT 来
  • 如何访问NTAG213 NFC交互计数器?

    我正在开发一个 Android 应用程序 我需要查找 NFC 标签被读取的次数 我已经浏览了 NFC 论坛上的文档 对于 NTAG213 有一个名为 MIRROR CONF 的字段 使用该字段可以确定交互计数器是否启用 禁用以及计数器的值
  • 如何用java播放.wav文件

    我正在尝试用 Java 播放 wav 文件 我希望它执行以下操作 按下按钮时 会发出短促的蜂鸣声 我用谷歌搜索了一下 但大部分代码都不起作用 有人能给我一个简单的代码片段来播放 wav 文件吗 最后我设法做到了以下几点并且效果很好 impo