【问题标题】:How to stop a sound using JLayer如何使用 JLayer 停止声音
【发布时间】:2013-04-19 17:29:01
【问题描述】:

我正在使用 JLayer 在我的游戏中播放 mp3 文件,但我无法停止这首歌。这是我的代码:

public void play(final String sonido) {

    reproduciendo.put(sonido, 1);
    Thread thread = new Thread() {
        public void run() {
            while(reproduciendo.get(sonido)!=null) {
            try {
            Player player = new Player(getSonido(sonido));
            player.play();
            if(player.isComplete()) reproduciendo.remove(sonido);
            } catch(Exception e) {e.printStackTrace();};
        }}
    };

    thread.start();

}


public void stop (String sonido ) {
    reproduciendo.remove(sonido);
}

当我使用 stop 方法删除哈希图“reproduciendo”的歌曲时,它应该停止,但什么也没做,我在这里读过这种方式,但它对我不起作用。你知道另一种方法吗?

【问题讨论】:

  • 我觉得你在previous question 中选择了JLayer 却忽略了我的建议,这是一个糟糕的选择。我在这个问题中添加了 JLayer 标记,并注意到它拥有 Java Sound 的 1/5 关注者。 Java Sound 播放的声音很容易停止。

标签: java audio jlayer


【解决方案1】:

我不知道您使用的是什么库,但也许您可以在您的播放器类中找到“停止”方法。

【讨论】:

  • 我正在使用 JLayer (link),它没有停止方法
  • 看起来 close 方法可以满足您的需求。
【解决方案2】:

查看我对其他类似问题的回答,只需播放一个音频帧并检查标志是否应该暂停或停止播放

https://stackoverflow.com/a/16738486/2094045

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2012-07-14
    • 2014-04-21
    • 1970-01-01
    相关资源
    最近更新 更多