【问题标题】:jlayer.javazoom player can not stop mp3jlayer.javazoom 播放器无法停止 mp3
【发布时间】:2015-03-17 16:47:18
【问题描述】:

如何在 jlayer 中停止 MP3? (the stop() 已不再使用)

我的代码如下:

//main class mp3_main

    private AdvancedPlayer player;

    public static void main(String[] args) {

    String file="C:\\cd.mp3";
    mp3PlayerSample mp3 = new mp3PlayerSample(file);

    mp3.play();
    mp3.stop();

}


//class mp3PlayerSample

private String filename;
private BufferedInputStream buffer;
private AdvancedPlayer player;
//constructor
public mp3PlayerSample(String filename) 
{
    this.filename = filename;
}

//start method
public void play() 
{
    FileInputStream fis;
    try {
        fis = new FileInputStream(this.filename);
        buffer = new BufferedInputStream(fis);
        try {
            this.player=new AdvancedPlayer(buffer);
            player.play();
        } catch (JavaLayerException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
//stop method
public void stop()
{
     if(player != null){
          player.close();
     } 
}

【问题讨论】:

    标签: java mp3 audio-player jlayer


    【解决方案1】:

    您需要在自己的线程中运行播放器,现在您的 main 方法在调用 play() 后阻塞,直到播放完成。

    请注意,jlayer 中包含的 Player/AdvancedPlayer 类是作为示例代码来演示解码音频的解码和输出必须如何连接。他们不是成熟的玩家(例如,甚至没有音量控制)。

    【讨论】:

      【解决方案2】:
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      
      import javazoom.jl.decoder.JavaLayerException;
      import javazoom.jl.player.Player;
      
      import java.util.Scanner;
      
      class Music extends Thread{
      
              public void run(){
      
      
                      try {
                              FileInputStream fileInputStream = new FileInputStream("Freedom.mp3");
                              Player player = new Player(fileInputStream);
                              player.play();
      
                      }catch(FileNotFoundException e) {
                          e.printStackTrace();
                      }catch(JavaLayerException e) {
                          e.printStackTrace();
                      }
      
              }   
      
      }
      
      public class Main {
      
          public static void main (String[]args){
      
              Scanner keyboard = new Scanner(System.in);
      
              Music music = new Music();
              music.start();
      
              System.out.println("Stop music: ");
                  int off = keyboard.nextInt();
      
              if(off == 0) {
                  music.stop();
              }
      
          }
      }
      

      【讨论】:

      • stop 不是已弃用吗?你会推荐什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多