1.导入播放mp3用的外部包

 

 

 

2.编写代码

import java.io.File;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.SourceDataLine;

 

public class PalyMusic {

 

         public static void main(String[] args) {

                   AudioInputStream m_audioInputStream = null;

                   SourceDataLine m_line = null;

                   AudioFormat audioFormat = null;

                   try {

                            File file = new File("C:/Users/Administrator/Desktop/sss.mp3");

                            m_audioInputStream = AudioSystem.getAudioInputStream(file);

                            audioFormat = m_audioInputStream.getFormat();

                           

                            if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED)

                             {

                                     AudioFormat newFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), 16, audioFormat.getChannels(),audioFormat.getChannels() * 2, audioFormat.getSampleRate(),false);

                                     System.out.println("开始转换音频格式: " + newFormat);

                                     AudioInputStream newStream = AudioSystem.getAudioInputStream(newFormat, m_audioInputStream);

                                     audioFormat = newFormat;

                                     m_audioInputStream = newStream;

                            }

                           

                            DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);

                            m_line = (SourceDataLine) AudioSystem.getLine(info);

                            m_line.open(audioFormat, m_line.getBufferSize());

                            m_line.start();

                           

                            int bufferSize = (int) audioFormat.getSampleRate() * audioFormat.getFrameSize();

                            byte[] buffer = new byte[bufferSize];

 

                            int bytesRead = 0;

                            while (bytesRead >= 0) {

                                     bytesRead = m_audioInputStream.read(buffer, 0, buffer.length);

                                     if (bytesRead >= 0) {

                                               m_line.write(buffer, 0, bytesRead);

                                     }

                            }

                            m_line.drain();

                            m_line.close();

                   } catch (Exception e) {

                            e.printStackTrace();

                   }

         }

}