1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package com.sf.ai.util;
- import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader;
- import javax.sound.sampled.AudioFileFormat;
- import javax.sound.sampled.AudioFormat;
- import javax.sound.sampled.AudioInputStream;
- import javax.sound.sampled.AudioSystem;
- import java.io.File;
- import java.io.IOException;
- public class AudioUtils {
- // 接收源文件和目标文件的地址
- // 这里使用到了java中的IO 输入输出
- public static boolean mp3ToPcm(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) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- return false;
- }
- }
- /**
- * 获取MP3音频流
- *
- * @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;
- }
- }
|