当前位置: 首页 > 面试题库 >

在Java中播放WAV时遇到问题

西门山
2023-03-14
问题内容

我正在尝试玩

PCM_UNSIGNED 11025.0 Hz, 8 bit, mono, 1 bytes/frame

文件如此[处(1)])和here(2)所述。

(1)一个不好的例子:

import  sun.audio.*;    //import the sun.audio package
import  java.io.*;

//** add this into your application code as appropriate
// Open an input stream  to the audio file.
InputStream in = new FileInputStream(Filename);

// Create an AudioStream object from the input stream.
AudioStream as = new AudioStream(in);         

// Use the static class member "player" from class AudioPlayer to play
// clip.
AudioPlayer.player.start(as);            

// Similarly, to stop the audio.
AudioPlayer.player.stop(as); 

第一种方法可行,但我不想依赖sun.*某些东西。第二个结果是仅播放了一些前导帧,听起来更像是单击。从ByteArrayInputStream播放时,不会是IO问题。

请与您分享为什么会发生这种情况。TIA。


问题答案:

我不确定为什么您链接的第二种方法会启动另一个线程;我相信音频还是会以自己的方式播放。剪辑播放完毕之前,您的应用程序完成了问题吗?

import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.LineEvent.Type;

private static void playClip(File clipFile) throws IOException, 
  UnsupportedAudioFileException, LineUnavailableException, InterruptedException {
  class AudioListener implements LineListener {
    private boolean done = false;
    @Override public synchronized void update(LineEvent event) {
      Type eventType = event.getType();
      if (eventType == Type.STOP || eventType == Type.CLOSE) {
        done = true;
        notifyAll();
      }
    }
    public synchronized void waitUntilDone() throws InterruptedException {
      while (!done) { wait(); }
    }
  }
  AudioListener listener = new AudioListener();
  AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(clipFile);
  try {
    Clip clip = AudioSystem.getClip();
    clip.addLineListener(listener);
    clip.open(audioInputStream);
    try {
      clip.start();
      listener.waitUntilDone();
    } finally {
      clip.close();
    }
  } finally {
    audioInputStream.close();
  }
}


 类似资料:
  • 问题内容: 如何在Java应用程序中播放和文件?我正在使用。我尝试在互联网上查找类似以下示例的内容: 但是,这只会播放文件。 问题答案: 如何在Java应用程序中播放和文件?我正在使用。我尝试在互联网上查找类似以下示例的内容: 但是,这只会播放文件。

  • 这是我的问题。我试过从绿鞋样品的视频示例。但我不能运行它,因为这个: 所以这给了我一个消息,我必须安装win32api gem。我尝试使用以下方法安装win32api: 错误:安装Win32-API时出错:错误:无法生成gem本机扩展。 正在检查strncpy_s()...不创建Makefile 结果记录到/home/msdc/.rvm/gems/rub-2.1.2/extensions/x86-

  • 问题内容: 我试图互相播放一些WAV文件。我尝试了这种方法: 但这同时发挥了所有作用。所以我需要一个看起来像这样的函数: 向量包含文件,例如:, 我已经寻找了四个多小时,但似乎找不到有效的解决方案:( 我还尝试将WAV文件连接到一个AudioInputStream。它不会产生任何编译器错误,但是声音完全混乱了。码: 编辑 即使我尝试将前两个文件放在一起,也会失败: 问题答案: 这段代码有点底层,但

  • 问题内容: 我尝试pygame播放wav文件,如下所示: 但是它改变了声音,我不知道为什么!我阅读了此链接解决方案,但无法解决播放wave文件的问题! 对于此解决方案,我不知道应该导入什么? 对于这个解决方案/ dev / dsp在新版本的linux中不存在: 而当我尝试pyglet它给我这个错误: 问题答案: 您可以使用PyAudio。我的Linux上的一个示例可以正常工作:

  • 问题内容: 我正在尝试使用Java播放* .wav文件。我希望它执行以下操作: 按下按钮时,播放一声短促的哔声。 我已经用谷歌搜索了,但是大多数代码都没有用。有人可以给我一个简单的代码片段来播放.wav文件吗? 问题答案: 没有Java反射的解决方案 , ) Java反射会降低性能。跑步:

  • 问题内容: 我正在用Java 做辫子。如果倒带时间,声音会向后播放。如何向后播放WAV文件?也许有像这样的流?在Braid网站上,您可以看到我的意思。 更新: _ 解决! 看到我自己的帖子。_ 问题答案: !!!!!! 我自己解决了这个问题(14岁!!), 我写了这个课: 然后: