[英]how to play mp3 music files (more than one music) in java?
我編寫了一些核心Java代碼來在Java中播放一個mp3文件。我成功了。 但是我想在Java中依次一個接一個地播放多個mp3音樂文件。
有可能嗎? 如果可能的話請幫助我。
這是演示代碼,
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class MP3 extends Thread{
static int k=0;
private String filename;
private Player player;
// constructor that takes the name of an MP3 file
public MP3(String filename) {
this.filename = filename;
}
public void close() { if (player != null) player.close(); }
// play the MP3 file to the sound card
public synchronized void play() {
try {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
}
catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}
// run in new thread to play in background
new Thread() {
public void run() {
try { player.play();}
catch (Exception e) { System.out.println(e); }
}
}.start();
}
// test client
public static void main(String[] args) {
String filename = args[0];
//StringBuffer br= new StringBuffer(filename);
StringBuffer mp3_name = new StringBuffer();
String arr[]=new String[3];
String mp3temp=filename;
for(int i=0;i<mp3temp.length();i++)
{
int count = mp3temp.indexOf(",");
System.out.println(count);
if(count != -1)
{
String temp = mp3temp.substring(0,count);
System.out.println(temp);
mp3_name.append(temp);
arr[k++] = temp;
mp3temp = mp3temp.substring(count+1,mp3temp.length());
}
if(count == -1)
{
if(mp3temp.endsWith("mp3"))
{
mp3_name.append(mp3temp);
arr[k++] = mp3temp;
System.out.println(mp3temp);
break;
}
}
}
StringBuffer bb=mp3_name;
String test ="";
String subtest ="";
for(int s= 0;s < arr.length;s++)
{
System.out.println(arr[s]);
MP3 mp3 = new MP3(arr[s]);
mp3.play();
System.out.println(arr[s]);
// do whatever computation you like, while music plays
int N = 4000;
double sum = 0.0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
sum += Math.sin(i + j);
}
}
System.out.println(sum);
// when the computation is done, stop playing it
mp3.close();
// play from the beginning
mp3 = new MP3(arr[s]);
mp3.play();
//}
}
}
}
通過分隔逗號從comand提示符處傳遞mp3文件。 例如:java MP3 test.mp3,a.mp3,b.mp3
感謝Bipin
絕對有可能。
如果從目錄中讀取您的C:\\ Music,則只需在所有位置讀取您的程序即可(我假設您目前只讀取其中一個)。
然后通過調用play方法在每個文件上執行(假設您有類似的東西)
您可以循環該方法,或使其在列表中顯示等等。
如果您發布代碼段,我可以詳細說明。
編輯:我不知道您使用命令行爭論,所以我會盡力而為。
您應該能夠閱讀每項論據,並使其在每項論據上執行,直到不再使用for循環為止。
public static void main(String[] args) {
//declare the length of your args
int length = args.length;
完成后,您可以在每首歌曲上運行play方法。
//Perform your loop
for (int i = 0; i < length; i++) {
//Call your play method here
} // End Loop
//When done you can print something
System.out.println("All Songs have been played");
}
類似於birryree在評論中所說。 您可以更改MP3類以存儲文件名列表。 然后,播放可以依次循環這些播放。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.