【发布时间】:2015-08-15 17:38:57
【问题描述】:
我已经花了几个小时寻找可以在 Java 中播放简单 wav 文件的示例代码。但是,我收到的没有一个对我有用。也许只有我不了解如何操作示例代码,但任何人都可以向我提供示例代码和如何使其正常工作的“说明”。任何帮助将不胜感激。
【问题讨论】:
我已经花了几个小时寻找可以在 Java 中播放简单 wav 文件的示例代码。但是,我收到的没有一个对我有用。也许只有我不了解如何操作示例代码,但任何人都可以向我提供示例代码和如何使其正常工作的“说明”。任何帮助将不胜感激。
【问题讨论】:
此代码将创建一个剪辑并在开始后连续播放:
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new URL(filename)));
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);
【讨论】:
有更现代的方法可以做到这一点,但小程序类 AudioClip 可能会满足您的需求:
import java.applet.Applet;
import java.applet.AudioClip;
final AudioClip clip = Applet.newAudioClip(resourceUrl);
播放一次:
clip.play();
循环:
clip.loop();
clip.stop();
getAudioClip
public AudioClip getAudioClip(URL url)返回由 URL 参数指定的
AudioClip对象。 无论音频剪辑是否存在,此方法总是立即返回。当此小程序尝试播放音频剪辑时,将加载数据。参数:
url - 给出音频剪辑位置的绝对 URL。
返回:
指定 URL 处的音频剪辑。
您实际上不需要对小程序进行任何操作即可使其正常工作。它可以在常规 Java 应用程序中正常工作。
【讨论】:
URL 对象。 URL 可以是file:/// URL。
import java.io.File;
import javax.sound.sampled.*;
public void play(File file)
{
try
{
final Clip clip = (Clip)AudioSystem.getLine(new Line.Info(Clip.class));
clip.addLineListener(new LineListener()
{
@Override
public void update(LineEvent event)
{
if (event.getType() == LineEvent.Type.STOP)
clip.close();
}
});
clip.open(AudioSystem.getAudioInputStream(file));
clip.start();
}
catch (Exception exc)
{
exc.printStackTrace(System.out);
}
}
【讨论】: