2013-07-02 122 views
1

我想開發一個使用java.I的MP3播放器嘗試了幾個代碼,它結束了太多的錯誤。所以請提供有關代碼的提示,也幫助我配置JMF?MP3播放器和JMF

+0

請參閱[Java聲音信息。頁面](http://stackoverflow.com/tags/javasound/info)瞭解如何播放MP3的詳細信息。 –

回答

1

JMF本身不支持mp3,因爲mp3不是開源的。

如果你想播放mp3文件,你可以使用jlayer,mp3spi和tritonus庫來做到這一點。

如果您需要關於這些庫的更多信息,請告訴我。

請參閱下面的代碼。隨着三個庫被添加到構建路徑,此代碼爲我工作。希望這會幫助你

String mp3File = "path to mp3 file"; 

public void playMp3(String mp3File) { 
    AudioInputStream din = null; 
    AudioInputStream in = null; 
    try { 
     File file = new File(mp3File); 
     in = AudioSystem.getAudioInputStream(file); 
     AudioFormat baseFormat = in.getFormat(); 
     AudioFormat decodedFormat = new AudioFormat(
       AudioFormat.Encoding.PCM_SIGNED, 
       baseFormat.getSampleRate(), 16, baseFormat.getChannels(), 
       baseFormat.getChannels() * 2, baseFormat.getSampleRate(), 
       false); 
     din = AudioSystem.getAudioInputStream(decodedFormat, in); 
     DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat); 
     line = (SourceDataLine) AudioSystem.getLine(info); 

     if (line != null) { 
      line.open(decodedFormat); 
      byte[] data = new byte[4096]; 
      // Start 
      line.start(); 

      int nBytesRead; 
      while ((nBytesRead = din.read(data, 0, data.length)) != -1) { 
       line.write(data, 0, nBytesRead); 
       if (flag) { 
        break; 
       } 
      } 
      line.drain(); 
      line.stop(); 
      line.close(); 
      din.close(); 
     } 

    } catch (UnsupportedAudioFileException uafe) { 
     JOptionPane.showMessageDialog(null, uafe.getMessage()); 
     logger.error(uafe); 
    } catch (LineUnavailableException lue) { 
     JOptionPane.showMessageDialog(null, lue.getMessage()); 
     logger.error(lue); 
    } catch (IOException ioe) { 
     JOptionPane.showMessageDialog(null, ioe.getMessage()); 
     logger.error(ioe); 
    } finally { 
     if (din != null) { 
      try { 
       din.close(); 
      } catch (IOException e) { 
      } 
     } 
     try { 
      in.close(); 
     } catch (IOException ex) { 
      logger.error(ex); 
     } 
    } 
} 
+0

如果可能,請提供更多信息.. –

+0

*「JMF本身不支持mp3 ..」*這是'很明顯錯誤'。它標配了MP3 SPI,詳見Java聲音信息。頁面鏈接在我的第一條評論(上面)。 –

+0

@Andrew Thompson同時在一個項目中分割mp3文件我從oracles站點找到了這個。所以我在這裏沒有看到任何錯誤。你可以在這裏查看http://www.oracle.com/technetwork/java/javase/formats-138492.html,這裏也有http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG -Desktop/html/sound.html。要在JMF中播放mp3,您需要單獨安裝mp3插件。 – pundit