Java で mp3 を再生する

Rupam Yadav 2023年10月12日
  1. JLayer を使用して MP3 ファイルを再生する
  2. JACo MP3Player を使用して MP3 を再生する
Java で mp3 を再生する

今日は、Java で MP3 を再生する方法を見ていきます。Java のネイティブライブラリでは、MP3 形式のオーディオを再生できないため、ここでは最小限のセットアップで済む 2つの外部ライブラリを使用します。

JLayer を使用して MP3 ファイルを再生する

以下では、MP3Player というクラスと 2つの変数を作成します。最初の変数は、再生する MP3 ファイルの名前とパスを保持する文字列で、2 番目の変数はクラス Player のオブジェクト jlPlayer です。次に、クラス MP3Player のコンストラクターを生成し、mp3FileToPlay 文字列をパラメーターとして受け取り、クラス変数を初期化します。

mp3FileToPlay を受け取る play() メソッドを作成し、ファイルを InputStream に変換する FileInputStream のコンストラクターに渡します。次に、この InputStream オブジェクトを BufferedInputStream に渡します。BufferedInputStream に。次に、bufferedInputStream オブジェクトを、オブジェクトを返す Player クラスのコンストラクターに渡します。

注意すべき点の 1つは、オーディオが再生されているスレッドは、オーディオ処理が完了するまでブロックされることです。メインスレッドをブロックしたくないので、new Thread() を作成し、その中で run() メソッドを呼び出します。run() メソッドでは、ライブラリの Player クラスに付属する play() 関数を呼び出します。スレッドを開始するには、スレッドの start() 関数を呼び出します。

ここで、main() メソッドで、filename を MP3 ファイル名で初期化し、コンストラクターで渡された filename を使用して MP3Player クラスのオブジェクトを作成します。オーディオを開始するには、mp3Player.play() を呼び出します。その後、Scanner オブジェクトを取得し、入力が stop に等しい場合はユーザーから入力を受け取り、Player の close()メソッドを呼び出す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