0

我正在尝试循环播放音频文件,但是当我尝试了其他各种可用方法时,我的音乐无法播放。

我的基本代码是:

import java.io.*;
import sun.audio.*;

public class PlayMusic {


    public void playSound() {
        try {
            AudioPlayer p = AudioPlayer.player;
            AudioStream as = new AudioStream(new FileInputStream("02 River Flows In You.wav"));
            p.start(as);


        } catch (IOException IOE) {
        }
    }
4

1 回答 1

0

我以前从未见过 sun.audio.AudioPlayer 使用过!我一直使用 javax.sound.sampled 库。

也许你可以告诉我你是怎么发现它的。在我看来,它看起来像是相当古老的代码(10 年?),而且有点有限。

我认为,如果您没有获得单次播放,您应该尝试使用 URL 表单:

     AudioStream audiostream = new AudioStream(url.openStream());
     AudioPlayer.player.start(audiostream);

然后尝试将代码放入循环中?很大程度上取决于 .start 命令是否阻塞。如果它启动了一个单独的线程(很可能),那么您将不得不弄清楚文件何时结束,而且我没有看到任何提供的命令来做到这一点!该规范还列出了创建 ContinuousAudioDataStream 并对其进行管理的可能性。

除非我对这个库有什么我不知道的地方,否则我建议使用 javax.sound.sampled.Clip 或 javax.sound.sampled.SourceDataLine 进行播放。Clip 有一个布尔值,您可以为循环设置,但需要先将整个文件加载到内存中。SourceDataLine 从 url 或文件位置播放,并且可以实现一个侦听器来告诉您文件何时完成。

http://docs.oracle.com/javase/tutorial/sound/playing.html

于 2013-02-05T18:55:12.853 回答