package util; import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader; public class AudioUtils { public static void main(String[] args) { convertMP32Pcm("E:/upload/test.mp3","E:/upload/test.pcm"); } /** * MP3转换PCM文件方法 * * @param mp3filepath 原始文件路径 * @param pcmfilepath 转换文件的保存路径 * @return * @throws Exception */ private static boolean convertMP32Pcm(String mp3filepath, String pcmfilepath){ try { //获取文件的音频流,pcm的格式 AudioInputStream audioInputStream = getPcmAudioInputStream(mp3filepath); //将音频转化为 pcm的格式保存下来 AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, new File(pcmfilepath)); return true; } catch (IOException e) { e.printStackTrace(); return false; } } /** * 创建日期:2018年1月14日<br/> * 创建时间:下午9:53:14<br/> * 创建用户:yellowcong<br/> * 机能概要:获取文件的音频流 * @param mp3filepath * @return */ private static AudioInputStream getPcmAudioInputStream(String mp3filepath) { File mp3 = new File(mp3filepath); AudioInputStream audioInputStream = null; AudioFormat targetFormat = null; try { AudioInputStream in = null; //读取音频文件的类 MpegAudioFileReader mp = new MpegAudioFileReader(); in = mp.getAudioInputStream(mp3); AudioFormat baseFormat = in.getFormat(); //设定输出格式为pcm格式的音频文件 targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16, baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false); //输出到音频 audioInputStream = AudioSystem.getAudioInputStream(targetFormat, in); } catch (Exception e) { e.printStackTrace(); } return audioInputStream; } }