1、Java播放MP3
不是用独立线程播放:
AudioInputStream audioInputStream;// 文件流 AudioFormat audioFormat;// 文件格式 SourceDataLine sourceDataLine;// 输出设备
File file = new File(filepath + filename);//将MP3文件路径转换为File对象 // 取得文件输入流 audioInputStream = AudioSystem.getAudioInputStream(file); audioFormat = audioInputStream.getFormat();//格式化 // 转换mp3文件编码 if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), 16, audioFormat .getChannels(), audioFormat.getChannels() * 2, audioFormat.getSampleRate(), false); audioInputStream = AudioSystem.getAudioInputStream(audioFormat, audioInputStream); } // 打开输出设备 DataLine.Info dataLineInfo = new DataLine.Info( SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED); sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo); sourceDataLine.open(audioFormat); sourceDataLine.start(); isStop = false; byte tempBuffer[] = new byte[320]; try { int cnt; hasStop = false; // 读取数据到缓存数据 while ((cnt = audioInputStream.read(tempBuffer, 0, tempBuffer.length)) != -1) {//从输入流中读取音频信息 if (isStop) break; if (cnt > 0) { // 写入缓存数据 sourceDataLine.write(tempBuffer, 0, cnt);//将音频信息写入混频器 } } // Block等待临时数据被输出为空 sourceDataLine.drain(); sourceDataLine.close(); hasStop = true; } catch (Exception e) { e.printStackTrace(); System.exit(0); }
使用独立线程播放:
AudioInputStream audioInputStream;// 文件流 AudioFormat audioFormat;// 文件格式 SourceDataLine sourceDataLine;// 输出设备
File file = new File(filepath + filename);//将MP3文件路径转换为File对象 // 取得文件输入流 audioInputStream = AudioSystem.getAudioInputStream(file); audioFormat = audioInputStream.getFormat();//格式化 // 转换mp3文件编码 if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), 16, audioFormat .getChannels(), audioFormat.getChannels() * 2, audioFormat.getSampleRate(), false); audioInputStream = AudioSystem.getAudioInputStream(audioFormat, audioInputStream); } // 打开输出设备 DataLine.Info dataLineInfo = new DataLine.Info( SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED); sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo); sourceDataLine.open(audioFormat); sourceDataLine.start(); // 创建独立线程进行播放 Thread playThread = new Thread(new PlayThread()); playThread.start();
// 播放线程 class PlayThread extends Thread { byte tempBuffer[] = new byte[320]; public void run() { try { int cnt; hasStop = false; // 读取数据到缓存数据 while ((cnt = audioInputStream.read(tempBuffer, 0, tempBuffer.length)) != -1) {//从输入流中读取音频信息 if (isStop) break; if (cnt > 0) { // 写入缓存数据 sourceDataLine.write(tempBuffer, 0, cnt);//将音频信息写入混频器 } } // Block等待临时数据被输出为空 sourceDataLine.drain(); sourceDataLine.close(); hasStop = true; } catch (Exception e) { e.printStackTrace(); System.exit(0); } } }
PS:需要外部jar支持:
jl1.0.jar mp3spi1.9.4.jar tritonus_share.jar
相关推荐
主要为大家详细介绍了java实现音频文件播放功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java播放音频文件jar包
java源码 java获取音频文件 播放时长AudioDemo .
NULL 博文链接:https://dadi520.iteye.com/blog/1143044
程序实现读取音频文件,然后对音频文件进行降分贝处理,然后再另存为新的音频文件
文件运行时要安装jmf包哦,这样那些类才可以导入运行! 没有包的下一下,刚在这传的,查java播放音频
java播放pcm文件。
JMF里面的java播放视频音频文件,很简单的小程序
Java音频视频编码器,本文实例将任何音频格式转换为MP3格式 您还可以调整视频大小,更改其大小和比例等 本文实例实用于任何Windows,MacOS,Linux系统 附:完整jar项目,完善的demo,详细的注释,简单易操作
使用java编程技术解析wav相关音频文件输出波形图,代码参考附件
此包可以支持java对音频文件的频谱分析,很好的东西,。。。。
用java实现上传视频、音频、pdf等文件。可以直接导入eclipse使用,测试服务可以用Tomcat等服务,夸平台可以在linux和weindows以及solaris下运行。
java对wav音频文件头分析代码,解析wav音频文件的组成部分以及每个部分的相应的值和类型
java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java音频格式转换工具.zipjava音频格式转换工具.zip java...
Java原生支持的音频文件 歌曲名liekkas 很好听 可以用于Java读取音频文件测试 如果需要Java支持更多的音频 建议查阅JMF
Java播放wav音频功能的实现代码,播放wav音频,压缩包中带有测试音频,是否能播放 MP3,未知。 boolean looping = false; //是否循环播放 String[] choics = { "chimes.wav", "start.wav" }; //声音文件名数组...
java关于音频文件播放的源代码。一个类,里面还有一个音频示例
音频文件PCM转WAV格式转换类 Utils类 直接可以使用有现成DEMO。感谢评论 音频文件PCM转WAV格式转换类 Utils类
包含了常用到的几种二进制或文件读取方式,很齐全,可直接使用
基于java的音频播放器转么播放wav文件,但是不能播mp3