Java에서 mp3 재생

Rupam Yadav 2023년10월12일
  1. JLayer를 사용하여 MP3 파일 재생
  2. JACo MP3Player를 사용하여 MP3 재생
Java에서 mp3 재생

오늘 우리는 Java에서 MP3를 재생하는 방법을 살펴볼 것입니다. Java의 기본 라이브러리에서는 MP3 형식의 오디오를 재생할 수 없으므로 여기에서는 최소한의 설정이 필요한 두 개의 외부 라이브러리를 사용합니다.

JLayer를 사용하여 MP3 파일 재생

아래에서 MP3Player라는 클래스를 만들고 첫 번째 변수는 재생할 MP3 파일의 이름과 경로를 저장할 문자열이고 두 번째 변수는 Player 클래스의 jlPlayer 개체입니다. 그런 다음 MP3Player 클래스의 생성자를 생성하고 mp3FileToPlay 문자열을 매개변수로 사용하고 클래스 변수를 초기화합니다.

mp3FileToPlay를 가져오는 play() 메서드를 만들어 파일을 InputStream으로 변환하는 FileInputStream의 생성자에 전달한 다음 이 InputStream 개체를 변환하는 BufferedInputStream에 전달합니다. BufferedInputStream으로. 이제 bufferedInputStream 개체를 개체를 반환하는 Player 클래스의 생성자에 전달합니다.

한 가지 주의할 점은 오디오가 재생되는 스레드는 오디오 처리가 완료될 때까지 해당 스레드가 차단된다는 것입니다. 우리는 메인 스레드를 차단하고 싶지 않기 때문에 new Thread()를 만들고 그 안에서 run() 메소드를 호출합니다. run() 메소드에서 라이브러리의 Player 클래스와 함께 제공되는 play() 함수를 호출합니다. 스레드를 시작하기 위해 스레드의 start() 함수를 호출합니다.

이제 main() 메서드에서 MP3 파일 이름으로 filename을 초기화한 다음 생성자에 전달된 filename을 사용하여 MP3Player 클래스의 개체를 만듭니다. 오디오를 시작하기 위해 mp3Player.play()를 호출합니다. 그 후 Scanner 객체를 얻고 입력이 stop과 같으면 사용자로부터 입력을 받은 다음 Playerclose() 메서드를 호출하는 mp3Player.close()를 호출합니다. 수업을 하고 음악을 멈춥니다.

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.Scanner;
import javazoom.jl.player.Player;

public class PlayMP3 {
  public static void main(String[] args) {
    String filename = "example.mp3";
    MP3Player mp3Player = new MP3Player(filename);
    mp3Player.play();

    Scanner sc = new Scanner(System.in);

    System.out.println("Write stop to stop the music: ");

    if (sc.nextLine().equalsIgnoreCase("stop")) {
      mp3Player.close();
    }
  }
}

class MP3Player {
  private final String mp3FileToPlay;
  private Player jlPlayer;

  public MP3Player(String mp3FileToPlay) {
    this.mp3FileToPlay = mp3FileToPlay;
  }

  public void play() {
    try {
      FileInputStream fileInputStream = new FileInputStream(mp3FileToPlay);
      BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
      jlPlayer = new Player(bufferedInputStream);
    } catch (Exception e) {
      System.out.println("Problem playing mp3 file " + mp3FileToPlay);
      System.out.println(e.getMessage());
    }

    new Thread() {
      public void run() {
        try {
          jlPlayer.play();
        } catch (Exception e) {
          System.out.println(e.getMessage());
        }
      }
    }.start();
  }

  public void close() {
    if (jlPlayer != null)
      jlPlayer.close();
  }
}

JACo MP3Player를 사용하여 MP3 재생

JACo MP3Player는 사용하기 위해 프로젝트에 포함시켜야 하는 외부 라이브러리입니다. 이것은 매우 작은 라이브러리이며 통합하기 쉽습니다. 다음 예제에서는 라이브러리의 클래스인 MP3Player 클래스의 개체를 만듭니다. 우리는 MP3Player의 생성자에서 File 객체를 전달합니다. 오디오를 시작하기 위해 MP3Player 클래스에서 play() 함수를 호출합니다.

오디오 처리를 중지하려면 먼저 isStopped() 메서드를 사용하여 오디오가 중지되었는지 확인하고 중지되면 스레드를 잠시 일시 중지하는 Thread.sleep()을 호출합니다.

import jaco.mp3.player.MP3Player;
import java.io.File;

public class PlayMP3 {
  public static void main(String[] args) {
    try {
      File f = new File("example.mp3");

      MP3Player mp3Player = new MP3Player(f);
      mp3Player.play();

      while (!mp3Player.isStopped()) {
        Thread.sleep(5000);
      }
    } catch (Exception e) {
      System.err.println(e.getMessage());
    }
  }
}
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn