2011-09-22 154 views
0

我寫了一些核心的java代碼,在java中播放一個mp3文件。我成功了。但我想在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

它運行您的下一個mp3文件等代碼?根據你的結構,你可能需要一些代碼來獲得一些答案。 – sealz

+0

添加一個包含要播放的歌曲列表的容器,並在使用代碼播放每首歌曲時遍歷列表? – birryree

+0

@ Bipin我編輯我的答案,我不知道你在使用CMD的論點,但我的想法應該做的伎倆,也許有一個小調整。 – sealz

回答

0

這是絕對有可能的。

如果從一個目錄讀取說你的C:\音樂,那麼簡單地讓你的程序在所有位置讀取(我假設你現在只讀一個)。

然後通過調用您的播放方法(IM假設你有類似的東西))

你也可以遍歷該方法還是有它淡化列表等等等等

我所能地對這些文件的執行詳細說明你是否發佈了代碼片段。

編輯:我不知道你使用的是命令行參數,所以我會盡力幫助盡我所能。

你應該能夠閱讀每個參數並在每個參數上執行,直到沒有使用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"); 
     } 
+0

嗨哈珀,我很抱歉編輯你的帖子。我試圖編輯我的帖子,但不幸的是我編輯你的帖子。PLZ回覆上面的演示編碼。你可以查看演示代碼。謝謝,Bipin – Bipin

+0

嗨哈珀,上述代碼運行成功。但直到最後才能播放mp3文件。它只是加載然後去第二個mpe文件等。可以播放mp3直到結束,然後在第一個mp3結束後加載第二個。感謝哈珀。 – Bipin

+0

是的,它應該是,我不知道我的頭頂,但它似乎你只需要添加更多的線條或移動的東西。如果我有一段時間,我會嘗試運行類似的東西,並讓你知道我還能找到什麼。 – sealz

0

與birryree在他的評論中所說的類似。您可以更改MP3類來存儲文件名列表。然後,玩家可以依次循環播放這些內容。