`
fantaxy025025
  • 浏览: 1328096 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

java播放音频声音mp3等

 
阅读更多

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...这只是一个基础,更高级的功能如音效处理、同步播放等可以通过进一步探索Java Sound API来实现。

    Java播放wav音频功能的实现代码.rar

    Java播放wav音频功能的实现代码,播放wav音频,压缩包中带有测试音频,是否能播放 MP3,未知。  boolean looping = false; //是否循环播放  String[] choics = { "chimes.wav", "start.wav" }; //声音文件名数组...

    通过 Java 获取音频的波形图

    综上所述,实现“通过Java获取音频的波形图”涉及到音频输入输出、声道处理、波形图生成、Swing GUI设计、数据可视化以及可能的音频分析等多个技术层面,需要综合运用Java Sound API、Swing组件以及数据处理和图形...

    JAVA对音频文件处理程序

    1. `AudioSystem`: 是音频I/O的主要入口点,提供了读取音频文件、播放音频以及访问系统声音服务的方法。 2. `AudioInputStream`: 代表音频数据的流,可以从文件或其他输入流中读取,并且可以与音频格式转换结合使用...

    java 语音合成PCM转MP3

    Java 语音合成为一项技术,它允许程序将文本转换为可播放的声音,广泛应用于智能助手、有声读物、电话自动服务等领域。在Java中,我们通常会利用TTS(Text To Speech)库来实现这一功能。PCM(Pulse Code Modulation...

    java 实现获取声音的处理

    本教程将深入探讨如何使用Java实现声音的获取、存储和播放。我们将主要关注Java Sound API,这是一个强大的库,提供了丰富的功能来处理音频数据。 首先,让我们了解Java Sound API的基础。它包括几个关键组件: 1....

    java mp3 音频文件解码器

    Java MP3音频文件解码器是一种完全由Java语言编写的软件工具,它的主要功能是将MP3音频格式转换为其原始的、未压缩的PCM(脉冲编码调制)数据。这款解码器的独特之处在于它不依赖任何外部的JAR包,这意味着它可以...

    java音频播放jar包

    - Java音频播放可能受到系统音频设置的影响,例如音频缓冲区大小、采样率等。 - 不同操作系统可能需要不同的驱动程序支持,确保Java环境配置正确。 - 音频文件的编码格式需与Java支持的格式匹配,否则可能需要先...

    java绘制音频波形图

    // 指定声音流中特定数据安排 System.out.println("baseFormat=" + baseFormat); DataLine.Info info = new DataLine.Info(SourceDataLine.class, baseFormat); System.out.println("info=" + info); ...

    用Java实现音频播放

    【Java实现音频播放】知识点详解 Java作为一种跨平台的编程语言,随着其性能的不断提升,逐渐成为处理实时信号,如音频播放的理想选择。本文重点探讨如何利用JavaSound API来构建一个支持MP3、WAV和Ogg音频格式的...

    java的MP3播放插件

    Java MP3播放插件是一种专为Java平台设计的软件组件,它允许开发者通过Java编程语言创建功能丰富的音乐播放器应用程序。这款插件扩展了Java Media Framework (JMF) 的功能,使得开发者不仅可以处理常见的音频格式如...

    Java源代码-MP3.rar_ MP3 java_Applet Mp3_java mp3_java 写的 播放 代码_mp3

    在Java中实现MP3播放,开发者需要了解如何处理音频流,这通常涉及使用Java Sound API。这个API提供了丰富的功能,包括播放、录制、混音以及处理各种音频格式的能力。开发者需要理解AudioInputStream类,它是处理音频...

    java播放声音

    在Java编程环境中,播放声音是一项常见的任务,尤其在游戏开发、音乐应用或者任何需要音频反馈的软件中。本文将深入探讨如何使用Java实现播放声音,包括播放、循环播放和停止功能。 首先,Java提供了`javax.sound....

    用java播放mp3和压缩过的wav示例

    总的来说,Java虽然没有原生支持MP3播放,但通过第三方库和Java Sound API,我们仍然可以实现对多种音频格式的支持,包括压缩过的WAV文件。在实践中,需要不断学习和研究,以便更好地适应各种音频处理需求。

    浅析几种Java播放音频技术及实例.zip

    在Java编程语言中,播放音频是一项常见的需求,无论是游戏开发、音乐播放软件还是教育应用,都需要音频处理功能。本文将深入探讨几种Java播放音频的技术...了解并掌握这些技术,将有助于你构建功能丰富的Java音频应用。

    java音频处理技术

    Java音频处理技术是指使用Java语言实现音频播放、处理和存储的技术。该技术的核心是JavaSound API,一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。 JavaSound 体系结构 JavaSound API 随同 Java 媒体...

    JAVA100例之实例78 JAVA播放声音

    总之,"JAVA100例之实例78 JAVA播放声音"是学习Java音频处理的一个重要示例,它涵盖了从加载音频文件到播放控制的完整流程,有助于开发者掌握Java Sound API的基本用法。通过不断实践和探索,可以进一步提升在Java...

    JAVA音频处理

    播放控制还可以包括暂停、停止、跳过、循环播放等。 4. **图形用户界面(GUI)**: 为了更好的用户体验,音乐播放器通常需要有一个友好的用户界面。可以使用Swing或JavaFX来创建播放器的用户界面。 5. **播放列表...

    java实现文字转语音播放

    在实际应用中,你可能还需要处理错误、添加多语言支持、创建更复杂的逻辑来控制语音播放等。Java中的TTS系统是高度可扩展的,可以适应各种需求。 此外,除了JSAPI,还有一些第三方库如FreeTTS、eSpeak等,它们提供...

    java视频音频的处理.pdf

    JavaSound通过其API提供了灵活的音频处理功能,使得开发者能够轻松地开发音频相关的应用程序,如音乐播放器、语音识别系统、网络电话等。 #### 二、JavaSound体系结构详解 JavaSound API的核心组件包括: - **...

Global site tag (gtag.js) - Google Analytics