如何在java中播放mp3音乐文件(多个音乐)?

时间:2011-09-22 14:16:52

标签: java core

我在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

由于 比拼

2 个答案:

答案 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类以存储文件名列表。然后播放可以依次循环播放这些播放。