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
과 같으면 사용자로부터 입력을 받은 다음 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