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();
}
}
}