yc tai
yc tai

Reputation: 1

jlayer.javazoom player can not stop mp3

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

Upvotes: 0

Views: 3377

Answers (2)

Christopher Anaya
Christopher Anaya

Reputation: 21

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

    }
}

Upvotes: 2

Durandal
Durandal

Reputation: 20059

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).

Upvotes: 1

Related Questions