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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn