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;
/**
* @author hjl
* @date 2008-8-1
* @function 简化实现音乐播放功能
* @version 1.0
*/
public class MusicPlay {
public static void main(String[] args) {
AudioInputStream m_audioInputStream = null;
SourceDataLine m_line = null;
AudioFormat audioFormat = null;
try {
File file = new File("D:\\music070924\\雨一直下.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("Converting audio format to " + 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();
}
}
}
异常:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1170)
at com.simpledev.music.sample.MusicPlay.main(MusicPlay.java:27)
缺少jl1.0.jar,tritonus_share.jar,mp3spi1.9.4.jar,见lib.rar