Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >java实现MP3

java实现MP3

作者头像
py3study
发布于 2020-01-08 09:06:01
发布于 2020-01-08 09:06:01
2.1K0
举报
文章被收录于专栏:python3python3

下载MpegAudioSPI1.9.4

http://www.javazoom.net/mp3spi/mp3spi.html

在项目中添加mp3spi1.9.4.jar  jl1.0.jar  tritonus_share.jar三个jar包

copy下面的代码到类中!

package org.mp3;

import java.io.File;

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;

public class TestMP3 {

    boolean isStop = true;// 控制播放线程

    boolean hasStop = true;// 播放线程状态

    AudioInputStream audioInputStream;// 音频文件流

    AudioFormat audioFormat;// 文件格式

    SourceDataLine sourceDataLine;// 输出设备

// 播放

private void play() {

        try {

            isStop = true;// 停止播放线程

            // 等待播放线程停止

            while (!hasStop) {

                System.out.print(".");

                try {

                    Thread.sleep(10);

                } catch (Exception e) {

                }

            }

            System.out.println("");

            File file = new File("/home/mayi/11.mp3");//linux路径

            // 取得文件输入流

            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;

            Thread playThread = new Thread(new PlayThread());

            playThread.start();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    //线程!!

    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);

            }

        }

    }

    public static void main(String args[]) {

        TestMP3 test=new TestMP3();

        test.play();

    }

}

运行!  OK    有空研究研究 audiospl的源码!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
语音识别 | Java 实现 AI 人工智能技术 - 语音识别功能
说到语音识别、语音翻译、图像识别、人脸识别等等,现在已经非常非常非常普及了,看过‘最强大脑’的朋友,也应该对‘小度’这个机器人有所了解,战胜国际顶尖的‘大脑’- 水哥,(PS:内幕不知),那么今天,我们来看下关于语音识别,是如何做到的,Java又是如何识别语音的?如何转换语音?
码神联盟
2018/07/30
7.8K0
语音识别 |  Java 实现 AI 人工智能技术 - 语音识别功能
百度语音识别pom引入jar工具类
pom引入jar <!--mp3转pcm--> <dependency> <groupId>com.googlecode.soundlibs</groupId> <ar
用户5899361
2020/12/07
9790
Java 音视频处理详解
Java 作为一种通用的编程语言,具备强大的跨平台能力和丰富的第三方库支持,使其在音视频处理领域也能大展拳脚。本文将详细介绍 Java 在音视频处理中的常用技术和方法,包括音视频捕获、处理、存储和播放。通过对实际代码示例的讲解,帮助读者深入理解并掌握 Java 音视频处理的核心内容。
繁依Fanyi
2024/08/01
4010
续更—Java游戏编程不完全详解-4
当我们玩游戏时,我们可能会听到声效,但是不会真正注意它们。因为希望听到他们,所以声效在游戏中是非常重要的。
老九君
2021/10/13
9870
续更—Java游戏编程不完全详解-4
Java实现一个打飞机的小游戏
64MB GIF可以欣赏:https://www.z4a.net/images/2022/03/23/ae8bacca260b5e978f1dab8010d9a2a1.gif
JavaPub
2022/03/23
5550
Java实现一个打飞机的小游戏
JavaCV的摄像头实战之六:保存为mp4文件(有声音)
本篇概览 本文是《JavaCV的摄像头实战》的第六篇,在《JavaCV的摄像头实战之三:保存为mp4文件》一文中,咱们将摄像头的内容录制为mp4文件,相信聪明的您一定觉察到了一缕瑕疵:没有声音 虽然《JavaCV的摄像头实战》系列的主题是摄像头处理,但显然音视频健全才是最常见的情况,因此就在本篇补全前文的不足吧:编码实现摄像头和麦克风的录制 关于音频的采集和录制 本篇的代码是在《JavaCV的摄像头实战之三:保存为mp4文件》源码的基础上增加音频处理部分 编码前,咱们先来分析一下,增加音频处理后具体的代码逻
程序员欣宸
2021/12/07
8480
JavaCV的摄像头实战之六:保存为mp4文件(有声音)
【Java】已解决:`javax.sound.sampled.LineUnavailableException`
在Java开发中,尤其是涉及音频处理时,javax.sound.sampled.LineUnavailableException是一个常见的异常。这个异常通常发生在试图获取音频输入或输出线路时,无法成功打开或访问这些资源。本文将详细分析该异常的背景、原因,并提供错误与正确的代码示例,同时给出一些注意事项,帮助开发者避免此类问题。
屿小夏
2024/09/06
1490
【Java】已解决:`javax.sound.sampled.LineUnavailableException`
Java如何调用本地扬声器
博主的毕设系统在做一个餐厅的点餐管理系统,在记性移动端页面开发的时候突发奇想做一个呼叫服务员,扬声器发声的一个功能类似于:“工作人员请注意,桌号8001顾客正在寻求帮助!”。
青衫染红尘
2021/01/19
1.1K0
Java Swing客户端小项目
以上是第一个小工具,只是用了txt文件进行数据存储,第二个客户端按数据源分为以下两种:
JQ实验室
2022/02/11
2.2K0
JavaCV的摄像头实战之七:推流(带声音)
本篇概览 本文是《JavaCV的摄像头实战》的第七篇,在《JavaCV的摄像头实战之五:推流》一文中,咱们将摄像头的内容推送到媒体服务器,再用VLC成功播放,相信聪明的您一定觉察到了一缕瑕疵:没有声音 虽然《JavaCV的摄像头实战》系列的主题是摄像头处理,但显然音视频健全才是最常见的情况,因此就在本篇补全前文的不足吧:编码实现摄像头和麦克风的推流,并验证可以成功远程播放音视频 关于音频的采集和录制 本篇的代码是在《JavaCV的摄像头实战之五:推流》源码的基础上增加音频处理部分 编码前,咱们先来分析一下,
程序员欣宸
2021/12/07
1.8K0
JavaCV的摄像头实战之七:推流(带声音)
java实现贪吃蛇小游戏(源码+注释)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141493.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
1.1K0
java实现贪吃蛇小游戏(源码+注释)
java开发_闹钟
==========================================================
Hongten
2018/09/13
12.8K0
java开发_闹钟
音视频入门之音频采集、编码、播放
今天我们学习音频的采集、编码、生成文件、转码等操作,我们生成三种格式的文件格式,pcm、wav、aac 三种格式,并且我们用 AudioStack 来播放音频,最后我们播放这个音频。
Android技术干货分享
2019/04/18
3.7K0
Java实现坦克大战3.0
文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】。 IO 流-应用到坦克大战 坦克大战0.5版 增加功能 防止敌人坦克重叠运动 记录玩家的总成绩(累积击毁敌方坦克数),存盘退出【io流】 记泉退出游戏时敌人坦克坐标/方向,存盘退出【io流】 玩游戏时,可以选择是开新游戏还是继续上局游戏 package com.hspedu.tankgame5; /** * 炸弹 */ public class Bomb {
timerring
2023/05/09
1.7K0
Java实现坦克大战3.0
Android多媒体之SoundPool+pcm流的音频操作
零、前言 今天比较简单,先理一下录制和播放的四位大将 再说一下SoundPool的使用和pcm转wav 讲一下C++文件如何在Android中使用,也就是传说中的JNI 最后讲一下变速播放和变调播放 ---- 一、AudioRecord和MediaRecorder,AudioTrack和MediaPlayer 0.到现在接触了四个类: 第一天:AudioRecord(录音)、AudioTrack(音频播放) 第二天:MediaPlayer(媒体播放器--音频部分) 第三天:MediaR
张风捷特烈
2019/02/25
2.8K0
Android多媒体之SoundPool+pcm流的音频操作
音视频开发之旅(35) -FFmpeg + AudioTrack 实现音频解码和播放
上一篇我们了解了FFmpeg解码流程、关键函数和结构体,实现了视频解码器。这篇我们来实现下音频的解码器。解码流程和视频的基本一致。FFmpeg解码的音频裸数据是PCM格式,android上播放PCM音频数据可以通过AudioTrack和OpenSL ES来实现。
音视频开发之旅
2021/03/02
1.9K0
音视频开发之旅(35) -FFmpeg + AudioTrack 实现音频解码和播放
AudioTrack的源码解读(1)
Android上使用AudioTrack可以实现播放PCM,本篇介绍下AudioTrack的创建过程。
一只小虾米
2022/10/25
1.9K0
AudioTrack的源码解读(1)
Android多媒体之认识MP3与内置媒体播放(MediaPlayer)
零、前言 作为90后,mp3格式的音乐可谓灵魂之友。 小时候带着耳机,躺在桌子上听歌看月亮心情依稀。 当某个旋律想起,还会不会浮现某个风景,某个人……, 今天全程单曲播放——梁静茹-勇气(献上
张风捷特烈
2019/02/25
2K0
Android多媒体之认识MP3与内置媒体播放(MediaPlayer)
Java课程设计—中国象棋(源代码及视频)「建议收藏」
数据结构课程设计——校园导游系统(C语言): B站视频: https://www.bilibili.com/video/BV1ui4y137X9 CSDN源码: https://blog.csdn.net/m0_46625346/article/details/107149473
全栈程序员站长
2022/07/23
2.1K0
Java课程设计—中国象棋(源代码及视频)「建议收藏」
JAVA使用JAVACV实现图片合成短视频,并给视频添加音频!!!
玩抖音的时候,发现可以根据图片生成视频,并添加音频,同时刚好在项目当中也遇到需要利用多张图片生成视频的操作,特此记录下实现的过程!!!
海加尔金鹰
2020/06/09
9.1K0
相关推荐
语音识别 | Java 实现 AI 人工智能技术 - 语音识别功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档