簡體   English   中英

如何在Java中播放mp3音樂文件(不止一種音樂)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM