AudioUtils.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package com.sf.ai.util;
  2. import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader;
  3. import javax.sound.sampled.AudioFileFormat;
  4. import javax.sound.sampled.AudioFormat;
  5. import javax.sound.sampled.AudioInputStream;
  6. import javax.sound.sampled.AudioSystem;
  7. import java.io.File;
  8. import java.io.IOException;
  9. public class AudioUtils {
  10. // 接收源文件和目标文件的地址
  11. // 这里使用到了java中的IO 输入输出
  12. public static boolean mp3ToPcm(String mp3filepath, String pcmfilepath) {
  13. try {
  14. //获取文件的音频流,pcm的格式
  15. AudioInputStream audioInputStream = getPcmAudioInputStream(mp3filepath);
  16. //将音频转化为 pcm的格式保存下来
  17. AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, new File(pcmfilepath));
  18. return true;
  19. } catch (IOException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. return false;
  23. }
  24. }
  25. /**
  26. * 获取MP3音频流
  27. *
  28. * @param mp3filepath
  29. * @return
  30. */
  31. private static AudioInputStream getPcmAudioInputStream(String mp3filepath) {
  32. File mp3 = new File(mp3filepath);
  33. AudioInputStream audioInputStream = null;
  34. AudioFormat targetFormat = null;
  35. try {
  36. AudioInputStream in = null;
  37. //读取音频文件的类
  38. MpegAudioFileReader mp = new MpegAudioFileReader();
  39. in = mp.getAudioInputStream(mp3);
  40. AudioFormat baseFormat = in.getFormat();
  41. //设定输出格式为pcm格式的音频文件
  42. targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16,
  43. baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
  44. //输出到音频
  45. audioInputStream = AudioSystem.getAudioInputStream(targetFormat, in);
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. return audioInputStream;
  50. }
  51. }