首选需要引入依赖:

<dependency><groupId>com.googlecode.soundlibs</groupId><artifactId>mp3spi</artifactId><version>1.9.5.4</version></dependency>

再导入以下工具类,就可以开始玩耍了

import java.io.File;
import javax.sound.sampled.AudioFileFormat;
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;
import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader;
/*** MP3转PCM Java方式实现*/
public class ConvertMP32PCM {/*** MP3转换PCM文件方法* * @param mp3filepath*            原始文件路径* @param pcmfilepath*            转换文件的保存路径* @throws Exception*/public static void convertMP32PCM(String mp3filepath, String pcmfilepath) throws Exception {AudioInputStream audioInputStream = getPcmAudioInputStream(mp3filepath);AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, new File(pcmfilepath));}/*** 播放MP3方法* * @param mp3filepath* @throws Exception*/public static void playMP3(String mp3filepath) throws Exception {File mp3 = new File(mp3filepath);// 播放int k = 0, length = 8192;AudioInputStream audioInputStream = getPcmAudioInputStream(mp3filepath);if (audioInputStream == null)System.out.println("null audiostream");AudioFormat targetFormat;targetFormat = audioInputStream.getFormat();byte[] data = new byte[length];DataLine.Info dinfo = new DataLine.Info(SourceDataLine.class, targetFormat);SourceDataLine line = null;try {line = (SourceDataLine) AudioSystem.getLine(dinfo);line.open(targetFormat);line.start();int bytesRead = 0;byte[] buffer = new byte[length];while ((bytesRead = audioInputStream.read(buffer, 0, length)) != -1) {line.write(buffer, 0, bytesRead);}audioInputStream.close();line.stop();line.close();} catch (Exception ex) {ex.printStackTrace();System.out.println("audio problem " + ex);}}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();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;}//使用mp3输入流转为音频输入流private AudioInputStream getPcmAudioInputStream(InputStream mp3Stream) {AudioInputStream audioInputStream = null;AudioFormat targetFormat = null;try {AudioInputStream in = null;//读取音频文件的类MpegAudioFileReader mp = new MpegAudioFileReader();in = mp.getAudioInputStream(mp3Stream);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;}public static void main(String[] args) {String mp3filepath = "/home/bobxie/temp.mp3";String pcmfilepath = "/home/bobxie/temp.pcm";try {//            ConvertMP32PCM.convertMP32PCM(mp3filepath, pcmfilepath);ConvertMP32PCM.playMP3(mp3filepath);} catch (Exception e) {e.printStackTrace();}}
}

mp3转为pcm工具相关推荐

  1. MP3、PCM、WAV等音频基础格式编码总结与代码分析

    MP3文件在生活中可以说非常熟悉了,几乎每天豆豆它本身是一种二进制文件,本篇文章就来看看它内部是如何编码的. 本项目用到的代码可以参考(其实核心的都在下边,最多不用移植了而已): https://gi ...

  2. Java工具类之音频播放与mp3转pcm

    Java工具类之音频播放与mp3转pcm 小程序通过科大讯飞或百度语音识别,由于无法识别mp3文件,需要将mp3文件转换为pcm文件(mp3的音频包含文件头描述啥的,而pcm的音频格式就纯音频了,没有 ...

  3. 微信小程序录音silk文件格式转换为MP3及PCM格式的方法

    关于silk文件如何转码为MP3或PCM格式的方法 介绍:最近在做微信小程序的人工客服,需要用到百度AI语音识别,但是因为微信的录音文件格式为 .silk,但是百度AI识别的格式应该为PCM或者WAV ...

  4. 百度语音识别JAVA代码_【百度语音识别】JavaAPI方式语音识别示例MP3转PCM

    [百度语音识别]JavaAPI方式语音识别示例MP3转PCM Java-API合成语音示例:http://ai.baidu.com/forum/topic/show/496727 REST-API文档 ...

  5. java 下mp3 转 pcm、wav

    mp3 转 pcm.wav 由于MP3直接转为wav,容易出现文件大小为0k,时间缩短等问题,这里是通过先将mp3转成pcm,然后在通过pcm转成wav.下面直接上代码. 先引入所需要的jar包 &l ...

  6. php silk文件转换pcm,微信小程序录音silk文件格式转换为MP3及PCM格式的方法

    关于silk文件如何转码为MP3或PCM格式的方法 介绍:最近在做微信小程序的人工客服,需要用到百度AI语音识别,但是因为微信的录音文件格式为 .silk,但是百度AI识别的格式应该为PCM或者WAV ...

  7. 音频转码(MP3、PCM、G723.1)

    音频 工具 ffmpeg全家桶 MP3转G723 MP3转PCM ffmpeg -y -i 1a.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 22050 1e.p ...

  8. Java汉字转为拼音工具类

    依赖文件 <!-- https://mvnrepository.com/artifact/com.belerweb/pinyin4j --><dependency><gr ...

  9. 【语音处理】wav转pcm mp3转pcm Java示例代码

    [语音处理]wav转pcmJava示例代码 都是作者亲测的代码哦.因各个音频之间存在差异导致转换会存在问题.建议大家自己有习惯看源码去了解音频相关知识的能力. 代码地址:https://gitee.c ...

  10. JAVA将MP3转为WAV(实现百度语音转译)

    近期实现的功能,不多说直接上代码(记得一些必要参数要配成自己的哈): 注意:1.本文由于存在语音文件的转换(百度api只支持pcm wav等有限类型,所以其他格式的音频需要自己转换),采用了ffmpe ...

最新文章

  1. 红帽子linux开启telnet,RedHat linux 9下配置telnet服务 | 技术部落
  2. 《统计学习方法》代码更新了-(github的star数5300+)
  3. 在采用vue-cli Post Get
  4. Java各进制之间的转换
  5. Java使用自定义包
  6. 防止事件导致的oncreate的多次调用
  7. 基于新版 node 的 vue 脚手架搭建
  8. ImportError: DLL load failed: 找不到指定的模块。Import tensorflow时
  9. 图神经网络中可能用到的11种距离, 小结
  10. (转)姚期智:呼之欲出的量子计算机,和它漫长的最后一英里(全文)
  11. java mysql大小写_java – 使用select where where Mysql在Mysql中区分大小写
  12. 公司让微信加人有没有软件_没有人想要使用软件
  13. Carson带你学Android:这是一份详细的 Retrofit使用教程(含实例讲解)
  14. 十年之前..., 十年之后...
  15. gta5结局杀老崔我哭了_GTA5:玩家眼中的重情义,剧情中变定时炸弹,崔佛为何是个疯子?...
  16. HHDBCS及HHDESK的资源加密功能
  17. dell 重装linux系统_预装Linux(Ubuntu)的DELL笔记本重装Windows
  18. java 实现http长轮询,Long Polling长轮询实现进阶
  19. linux下DNS配置及域名解析服务,linux DNS域名解析服务
  20. 离散数学 08.02 格的定义

热门文章

  1. 中科院生物信息学题目整理
  2. android 京东平板布局,京东商城上线安卓Pad客户端 完美布局移动端
  3. 调制解调器和路由器的区别:
  4. 猫(Modem)和路由器有什么区别?
  5. 用python开发的云监控平台_edwin报警和监控平台开源了(python源码)
  6. Falsy Bouncer|FreeCodeCamp
  7. 【古代文学论文】沈德潜诗学思想的调和格调与文化意蕴(节选)
  8. 便利店“三方会战”,谁是最后赢家?
  9. 整数拼接(记忆化更新)
  10. ckplayer html播放本地,vue中使用ckplayer播放器