在 Java 中连接 WAV 文件

2023-12-08

这是我的代码,它连接四个 wav 文件并生成 wavAppend.wav。这个串联的文件可以在 Windows Media Player 中很好地播放。 但通过PlaySound类,只能听到one.wav。 有人可以帮忙吗?

class PlaySound extends Object implements LineListener
{
   File soundFile;
   JDialog playingDialog;
   Clip clip;

   public void PlaySnd(String s) throws Exception
   {
      JFileChooser chooser = new JFileChooser();
      soundFile = new File(s);
      Line.Info linfo = new Line.Info(Clip.class);
      Line line = AudioSystem.getLine(linfo);
      clip = (Clip) line;
      clip.addLineListener(this);
      AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
      clip.open(ais);
      clip.start();
    }

    public void update(LineEvent le)
    {
        LineEvent.Type type = le.getType();
        playingDialog.setVisible(false);
        clip.stop();
        clip.close();
     }
}

public class Main
{
   public static void main(String[] args)
   {
      int i;
      String wavFile[] = new String[4];
      wavFile[0] = "D://one.wav";
      wavFile[1] = "D://two.wav";
      wavFile[2] = "D://three.wav";
      wavFile[3] = "D://space.au";
      AudioInputStream appendedFiles;

      try
      {
          AudioInputStream clip0=AudioSystem.getAudioInputStream(new File(wavFile[0]));
          AudioInputStream clip1=AudioSystem.getAudioInputStream(new File(wavFile[1]));
          AudioInputStream clip3;

          for (i=0;i<4;i++)
          {
              appendedFiles = new AudioInputStream(
                 new SequenceInputStream(clip0, clip1),
              clip0.getFormat(),
              clip0.getFrameLength() + clip1.getFrameLength());
              AudioSystem.write(appendedFiles, AudioFileFormat.Type.WAVE, new File("D:\\wavAppended.wav"));

              clip3 = AudioSystem.getAudioInputStream(new File("D:\\wavAppended.wav"));
              clip0=clip3;
              clip1 = AudioSystem.getAudioInputStream(new File(wavFile[i+2]));

            }

            PlaySound p = new PlaySound();
            p.PlaySnd("D://wavAppended.wav");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

WAV 文件不是这样工作的——您不能将多个文件放在一起(例如,就像您不能连接 JPEG 图像一样),因为数据上有一个标头,并且数据有多种不同的格式可能在。我很惊讶该文件竟然加载了。

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

在 Java 中连接 WAV 文件 的相关文章

随机推荐

  • JTextField 的值更改侦听器

    我希望在用户更改文本字段中的值后立即显示消息框 目前 我需要按 Enter 键才能弹出消息框 我的代码有什么问题吗 textField addActionListener new java awt event ActionListener
  • 如何在我的汇编代码中调用 C++ 函数

    我需要从程序集中调用 PrintResult 来显示结果 我知道我必须在某处使用 extrn PrintResult 并且我应该使用 call PrintResult 来调用该函数 但我不太确定如何使用它 有什么建议 public Squa
  • NSAttributedString 的boundingRectWithSize 返回错误的大小

    我试图获取属性字符串的矩形 但boundingRectWithSize调用不考虑我传入的大小 并且返回一个具有单行高度的矩形 而不是一个大高度 它是一个长字符串 我已经尝试过传递一个非常大的高度值和 0 如下面的代码所示 但返回的矩形始终是
  • 如何在页面关闭时执行 PHP 代码?

    我试图找到一种方法来在用户关闭页面后执行一些 PHP 代码 在我的应用程序中 一旦用户关闭或导航离开页面 服务器就会在数据库中将用户状态为 离线 这需要代码知道用户何时离开页面 我的应用程序也有无限的负载 即它将休眠直到用户关闭页面 当用户
  • 使用 Gulp 来连接和 Uglify 文件

    我正在尝试使用 Gulp 来 获取 3 个特定的 javascript 文件 将它们连接起来 然后将结果保存到文件中 concat js 获取这个串联文件并对其进行 uglify minify 然后将结果保存到另一个文件 uglify js
  • 从 Jenkins 管道并行步骤收集数据

    从并行步骤收集数据 例如通过 失败结果 的最佳方法是什么 到目前为止我已经达到了什么 groovy def fspam name spam spam name BEEN THERE TOO pipeline node slave stage
  • Spring Boot Application.properties 没有自动完成建议

    我是 Spring Boot 初学者 我使用 spring 初始化程序创建了一个示例项目 在 application properties 中我想更改服务器 端口但编辑器不知道 什么都不知道 有什么问题 IntelliJ IDEA 社区版不
  • 使用 es6 或 lodash 将字符串数组转换为对象数组

    我有一个字符串数组 我想将其转换为对象数组 array a b c 我想生成 array name a isChecked false availibility 0 name b isChecked false availibility 0
  • Android ndk 上 OpenGLES 1.1 中具有 GLSurfaceView 模式的 FrameBuffer

    在 Android NDK 中 是否可以使 OpenGL ES 1 1 使用典型的 java 端 GLSurfaceView 模式 覆盖 GLSurfaceView Renderer onDrawFrame onSurfaceCreated
  • 不要在提交表单时重定向

    我有一个简单的基于 HTML 的表单 如下所示 它会在单击时不断刷新页面
  • 我可以将跨站点 标记的数据作为 blob 获取吗?

    我正在尝试将网页链接到的几个图像保存到离线存储中 我在 Firefox 上使用 IndexedDB 在 Chrome 上使用 FileSystem API 我的代码实际上是一个扩展 因此在 Firefox 上我在 Greasemonkey
  • Mangle dll 使用 DEF 文件导出名称

    我正在尝试创建一个代理 dll 并遇到了这个问题 假设我有以下文件 a cpp extern C int declspec dllexport func int x return x a def EXPORTS func 4Test QAE
  • 使用Scrapy爬取本地XML文件-Start URL本地文件地址

    我想用 scrapy 抓取我位于下载文件夹中的本地 xml 文件 使用 xpath 提取相关信息 使用 scrapy 介绍作为guide 2016 01 24 12 38 53 scrapy DEBUG Retrying
  • 数据成员 int 引用

    我试图通过引用将 int 存储为类的数据成员 我预计对象会通过引用获取 int 而不是如果我从外部增加引用 则会增加对象内部的值 class A private int x public A int y x y cout lt lt A s
  • LLVM insertvalue 优化不佳?

    当我发出 LLVM 代码时 是否应该避免将 insertvalue 指令与加载和存储结合使用 当我使用它时 我总是得到糟糕的优化本机代码 看下面的例子 ModuleID mod target datalayout e p 64 64 64
  • 如何编码 WAV 以使用 SIPp 播放

    通过观察另一个SIPp相关问题我了解到现在可以使用rtp stream action 我尝试了几个不同的 WAV 文件 但没有成功 我听到的只是一些噪音 而不是预期的声音 在上述问题的一条评论中 有一条简单的指令将 WAV 文件转换为兼容格
  • SQL Server表默认是排序的

    我有一个简单的 SSIS 包 可以将平面文件中的数据导入到 SQL Server 表 SQL Server 005 中 文件包含 70k 行 表没有主键 导入成功 但是当我打开 SQL Server 表时 行的顺序与文件的顺序不同 仔细观察
  • SwiftUI TabView 在添加/删除 CoreData 元素期间给出错误消息

    我目前正在尝试将 TabView 与 CoreData 一起用于轮播视图 PageTabViewStyle 当我按如下顺序添加新页面时 不会发生错误 age name 3 page name 4 page name 5 但是 如果我将数字放
  • 如何从 Swift 中的时间服务器获取当前时区的当前日期?

    我正在开发应用程序 我想根据用户当前时区获取当前日期 即使用户从设备设置菜单更改日期后也是如此 获取我使用的当前时区 let timeZone TimeZone current print timeZone 例如 这里我得到 亚洲 加尔各答
  • 在 Java 中连接 WAV 文件

    这是我的代码 它连接四个 wav 文件并生成 wavAppend wav 这个串联的文件可以在 Windows Media Player 中很好地播放 但通过PlaySound类 只能听到one wav 有人可以帮忙吗 class Play