java播放音频声音mp3等
=
=
=
这个方法不能用,但不知道为什么。
public static void playSound(String filePath) { try { // 获取Clip对象 Clip clip = AudioSystem.getClip(); // 打开声音数据,这里使用的是Beep音调 clip.open(AudioSystem.getAudioInputStream(new File(filePath))); // 获取和设置音量(可选) FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); gainControl.setValue(-10.0f); // 设置音量为最大 // 启动播放 clip.start(); // 等待音频播放结束 clip.drain(); // 关闭资源 clip.close(); } catch (Exception e) { e.printStackTrace(); } }
这个方法可以使用。
public static void playWav(String path){ AudioInputStream audioStream; AudioFormat audioFormat; SourceDataLine sourceDataLine; try{ int count; byte[] buf = new byte[1024]; //获取音频输入流 audioStream = AudioSystem.getAudioInputStream(new File(path)); //获取音频的编码格式 audioFormat = audioStream.getFormat(); DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED); sourceDataLine = (SourceDataLine)AudioSystem.getLine(dataLineInfo); sourceDataLine.open(audioFormat); sourceDataLine.start(); //播放音频 while((count = audioStream.read(buf,0,buf.length)) != -1){ sourceDataLine.write(buf,0,count); } //播放结束,释放资源 sourceDataLine.drain(); sourceDataLine.close(); audioStream.close(); }catch(UnsupportedAudioFileException | LineUnavailableException | IOException ex){ ex.printStackTrace(); } }
这个类可以播放map3
public static class Mp3Player { boolean isStop = false; boolean hasStop = false; AudioInputStream audioInputStream;// 文件流 AudioFormat audioFormat;// 文件格式 SourceDataLine sourceDataLine;// 输出设备 String filePath; public void play(){ // 取得文件输入流 try { File file = new File(filePath);//将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]; 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); } } public void playByThread(){ File file = new File(filePath);//将MP3文件路径转换为File对象 // 取得文件输入流 try { 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(); } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { e.printStackTrace(); } // 创建独立线程进行播放 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); } } } }
其中用到了几个jar包:
第一个:
<!-- https://mvnrepository.com/artifact/com.googlecode.soundlibs/mp3spi --> <dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>mp3spi</artifactId> <version>1.9.5.4</version> </dependency>
第二个:
https://www.tritonus.org/plugins.html 这里下载。
Download (latest, requires 1.5): | tritonus_share-0.3.6.jar (101 kB) |
Download (1.4 compatible): | tritonus_share.jar (101 kB) |
第三个:
<!-- https://mvnrepository.com/artifact/javazoom.jl/JLayer --> <!-- 这个站点死了。jar包放在WEB-INF/lib目录下。 --> <!-- <dependency>--> <!-- <groupId>javazoom.jl</groupId>--> <!-- <artifactId>JLayer</artifactId>--> <!-- <version>1.0</version>--> <!-- </dependency>-->
jl-1.0.1.jar下载地址:网盘下载:
链接:https://pan.baidu.com/s/1VKUjAfLZzYo3GSF6qbH9iA?pwd=1234
提取码:1234
tritonus_share-0.3.6.jar下载地址:网盘下载:
链接:https://pan.baidu.com/s/1p91D9dbIoPMZZ-nDgEPoRg?pwd=1234
提取码:1234
=
=
=
相关推荐
在Java编程语言中,播放声音是一项常见的需求,特别是在开发多媒体应用程序或者游戏时。这个实例将指导我们如何在Java...这只是一个基础,更高级的功能如音效处理、同步播放等可以通过进一步探索Java Sound API来实现。
Java播放wav音频功能的实现代码,播放wav音频,压缩包中带有测试音频,是否能播放 MP3,未知。 boolean looping = false; //是否循环播放 String[] choics = { "chimes.wav", "start.wav" }; //声音文件名数组...
综上所述,实现“通过Java获取音频的波形图”涉及到音频输入输出、声道处理、波形图生成、Swing GUI设计、数据可视化以及可能的音频分析等多个技术层面,需要综合运用Java Sound API、Swing组件以及数据处理和图形...
1. `AudioSystem`: 是音频I/O的主要入口点,提供了读取音频文件、播放音频以及访问系统声音服务的方法。 2. `AudioInputStream`: 代表音频数据的流,可以从文件或其他输入流中读取,并且可以与音频格式转换结合使用...
Java 语音合成为一项技术,它允许程序将文本转换为可播放的声音,广泛应用于智能助手、有声读物、电话自动服务等领域。在Java中,我们通常会利用TTS(Text To Speech)库来实现这一功能。PCM(Pulse Code Modulation...
本教程将深入探讨如何使用Java实现声音的获取、存储和播放。我们将主要关注Java Sound API,这是一个强大的库,提供了丰富的功能来处理音频数据。 首先,让我们了解Java Sound API的基础。它包括几个关键组件: 1....
Java MP3音频文件解码器是一种完全由Java语言编写的软件工具,它的主要功能是将MP3音频格式转换为其原始的、未压缩的PCM(脉冲编码调制)数据。这款解码器的独特之处在于它不依赖任何外部的JAR包,这意味着它可以...
- Java音频播放可能受到系统音频设置的影响,例如音频缓冲区大小、采样率等。 - 不同操作系统可能需要不同的驱动程序支持,确保Java环境配置正确。 - 音频文件的编码格式需与Java支持的格式匹配,否则可能需要先...
// 指定声音流中特定数据安排 System.out.println("baseFormat=" + baseFormat); DataLine.Info info = new DataLine.Info(SourceDataLine.class, baseFormat); System.out.println("info=" + info); ...
【Java实现音频播放】知识点详解 Java作为一种跨平台的编程语言,随着其性能的不断提升,逐渐成为处理实时信号,如音频播放的理想选择。本文重点探讨如何利用JavaSound API来构建一个支持MP3、WAV和Ogg音频格式的...
Java MP3播放插件是一种专为Java平台设计的软件组件,它允许开发者通过Java编程语言创建功能丰富的音乐播放器应用程序。这款插件扩展了Java Media Framework (JMF) 的功能,使得开发者不仅可以处理常见的音频格式如...
在Java中实现MP3播放,开发者需要了解如何处理音频流,这通常涉及使用Java Sound API。这个API提供了丰富的功能,包括播放、录制、混音以及处理各种音频格式的能力。开发者需要理解AudioInputStream类,它是处理音频...
在Java编程环境中,播放声音是一项常见的任务,尤其在游戏开发、音乐应用或者任何需要音频反馈的软件中。本文将深入探讨如何使用Java实现播放声音,包括播放、循环播放和停止功能。 首先,Java提供了`javax.sound....
总的来说,Java虽然没有原生支持MP3播放,但通过第三方库和Java Sound API,我们仍然可以实现对多种音频格式的支持,包括压缩过的WAV文件。在实践中,需要不断学习和研究,以便更好地适应各种音频处理需求。
在Java编程语言中,播放音频是一项常见的需求,无论是游戏开发、音乐播放软件还是教育应用,都需要音频处理功能。本文将深入探讨几种Java播放音频的技术...了解并掌握这些技术,将有助于你构建功能丰富的Java音频应用。
Java音频处理技术是指使用Java语言实现音频播放、处理和存储的技术。该技术的核心是JavaSound API,一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。 JavaSound 体系结构 JavaSound API 随同 Java 媒体...
总之,"JAVA100例之实例78 JAVA播放声音"是学习Java音频处理的一个重要示例,它涵盖了从加载音频文件到播放控制的完整流程,有助于开发者掌握Java Sound API的基本用法。通过不断实践和探索,可以进一步提升在Java...
播放控制还可以包括暂停、停止、跳过、循环播放等。 4. **图形用户界面(GUI)**: 为了更好的用户体验,音乐播放器通常需要有一个友好的用户界面。可以使用Swing或JavaFX来创建播放器的用户界面。 5. **播放列表...
在实际应用中,你可能还需要处理错误、添加多语言支持、创建更复杂的逻辑来控制语音播放等。Java中的TTS系统是高度可扩展的,可以适应各种需求。 此外,除了JSAPI,还有一些第三方库如FreeTTS、eSpeak等,它们提供...
JavaSound通过其API提供了灵活的音频处理功能,使得开发者能够轻松地开发音频相关的应用程序,如音乐播放器、语音识别系统、网络电话等。 #### 二、JavaSound体系结构详解 JavaSound API的核心组件包括: - **...