我在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();
//}
}
}
}
通过分隔逗号从命令提示符传递mp3文件。例如:java MP3 test.mp3,a.mp3,b.mp3
由于 比拼
答案 0 :(得分:0)
绝对有可能。
如果从目录中读取您的C:\ Music,那么简单就可以在所有位置读取您的程序(我假设您目前只在一个位置读取)。
然后通过调用play方法执行每个文件(假设你有类似的东西))
你可以循环播放该方法或让它播放列表等等。
如果您发布代码片段,我可以详细说明。
编辑:我不知道您使用的是命令行争论,所以我会尽力帮助。
你应该能够阅读每个论点并让它在每个论点上执行,直到没有使用for循环。
public static void main(String[] args) {
//declare the length of your args
int length = args.length;
完成后,您可以在每首歌曲上运行播放方法。
//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");
}
答案 1 :(得分:0)
与birryree在评论中所说的相似。您可以更改MP3类以存储文件名列表。然后播放可以依次循环播放这些播放。