我已经阅读了有关Java AudioClip的先前问题并进行了研究,但我仍然无法弄清为什么
AudioClip无法播放。 .wav剪辑在Eclipse IDE中可以正常运行,它也位于相应的目录中;如果文件
位于错误的目录中,此代码段会引发错误消息。

我的教授要求我们也使用audioClip = Applet.newAudioClip(new File(filePath).toURI().toURL());这种格式播放audioClip

当执行底部的play方法时,确实会被调用,但是没有声音!
任何帮助,将不胜感激。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.net.MalformedURLException;

public class PlaySoundApplet extends Applet implements ActionListener
{
    private static final long serialVersionUID = 1L;
    Button play,stop;
    AudioClip audioClip;

  public void init()
  {
      play = new Button("Play");
      add(play);
      play.addActionListener(this);

      stop = new Button("Stop");
      add(stop);
      stop.addActionListener(this);

      try
      {
          String filePath = "." + File.separator + "audio" + File.separator + "island_music.wav";

          File file = new File(filePath);

          if (file.exists())
          {
              audioClip = Applet.newAudioClip(file.toURI().toURL());
          }
          else
          {
              throw new RuntimeException("Directory " + filePath + " does not exist"); //debugging
          }
      }
      catch (MalformedURLException malformedURLException)
      {
          throw new RuntimeException("Malformed URL: " + malformedURLException);  //debugging
      }
  }

  public void actionPerformed(ActionEvent ae)
  {
      Button source = (Button)ae.getSource();

      if (source.getLabel() == "Play")
      {
          audioClip.play();
          System.out.println("Play was executed");
      }
      else if(source.getLabel() == "Stop")
      {
          audioClip.stop();
          System.out.println("Stop was executed");
      }
  }
}

最佳答案

使用简单的leftright.wav尝试代码。



大多数媒体格式(声音,图像,视频等)都是所谓的“容器格式”。媒体的编码可以有多种类型。 Java读取某些编码,但不读取其他编码。



如果是用于应用程序资源,则倾向于将当前的WAV转换为与Java Sound兼容的类型。

07-26 09:29