jlayer.javazoom player can not stop mp3

自作多情 提交于 2020-06-18 05:39:32

问题


How to stop MP3 in jlayer? (the stop() is no longer used)

My code as follows:

//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();
     } 
}

回答1:


You need to run the player in its own thread, right now your main method blocks after calling play() until playback has completed.

Note, the classes Player/AdvancedPlayer included with jlayer are meant as example code to demonstrate how the decoding and output of decoded audio has to be wired up. They are not fully fledged players (e.g. there isn't even volume control).




回答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();
        }

    }
}


来源:https://stackoverflow.com/questions/29104942/jlayer-javazoom-player-can-not-stop-mp3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!