java - 在Java中使用.wav格式循环播放音频文件

标签 java audio wav javasound

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

我的基本代码是:

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) {
        }
    }

最佳答案

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

也许您可以告诉我您是如何发现它的。在我看来,它看起来像是比较旧的代码(10年?),而且在有限的方面也有点。

我认为,如果您没有一次播放,则应尝试使用URL形式:

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

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

除非我对该库不了解,否则建议使用javax.sound.sampled.Clip或javax.sound.sampled.SourceDataLine进行播放。剪辑具有可设置为循环的 bool(boolean) 值,但需要先将整个文件加载到内存中。 SourceDataLine从URL或文件位置播放,并且可以实现一个侦听器来告诉您文件何时完成。

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

关于java - 在Java中使用.wav格式循环播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674496/

相关文章:

python - 在进行 FFT 和改变频率分量值后,我只会在音频中得到噪声。我哪里错了?

java - OutOfMemoryError 会导致线程死亡吗?

java - 我应该使用多少个线程来处理网络爬行应用程序中的 1,00,000 个元素?

java - 使用 Gson 反序列化对象和列表

ios - 用于在iOS中压缩和保存声音的库

python - 获取wav文件的采样率而不加载整个文件

java - Android Studio : SQLite Database Query for getting closest location from coordinates

c# - 将应用程序声音发送到特定的音频设备C#

IOS 和 FFT (vDSP_fft_zrip) : frequencies below appr. 100 Hz 被切断 - 为什么?

java - 我如何才能播放 .wav 声音?