使用Java播放MP3或Wav音频

JavaSound是一个小巧的低层应用程序接口(API),它支持数字音频和乐器数字接口(MIDI)数据的记录和回放。在JDK 1.3.0之前,JavaSound是一个标准的Java扩展API,但从Java 2的1.3.0版开始,JavaSound就被包含到JDK之中。由于Java有着跨平台(操作系统、硬件平台)的特点,基于JavaSound的音频处理程序能够在任何实现了Java 1.3以上版本的系统上运行,无需加装任何支持软件。
使用JavaSound API,可以实现各种基于声音的应用,例如声音录制、音乐播放、网络电话、音乐编辑等。JavaSound API又以各种解码和合成器SPI(服务提供者接口,Service Provider Interface)为基础,实现各种音乐格式的解码与转码。
在处理输入音频时,对于来自各种音频输入端口的信号,例如麦克风、CD播放器、磁带播放器等,可以在它们到达TargetDataLine之前,利用混频器控制输入混频,最后在程序中通过TargetDataLine获得数字化的音频输入流。
类似地,在处理输出音频时,混频器用来对一系列来自SourceDataLine的数据进行混频处理,经处理后的信号可输出到各种输出端口,例如扬声器、耳机等。SourceDataLine是一个可写入音频信号数字流的设备,例如,我们可以从一个WAV文件读取内容写入到SourceDataLine,然后再通过扬声器输出。我们可以认为SourceDataLine是一个虚拟的播放器,只要电脑中连接的扬声器、耳机可用,音频信号就会经SourceDataLine进行播放。

但是,JavaSound只支持wav等格式的音频,它缺少对MP3格式音频文件的支持,想要使用Java代码播放MP3需要第三方库。JLayer-MP3 library是一款Java语言编写的开源MP3解码器库(jl1.0.jar),又称为javazoom.jl包。为了支持mp3的播放,我们必须添加mp3的SPI支持库(已包含JLayer-MP3 library)到当前项目中。mp3的SPI支持库共有三个Jar文件jl1.0.jar、mp3spi1.9.4.jar、tritonus_share.jar。

为了让Java程序能同时播放MP3格式和WAV等格式的音频,需要如图在当前项目的构建文件中添加mp3的SPI支持库:
在这里插入图片描述
下面是一个简单的播放例程,可兼容播放MP3和WAV音频,MP3 音频实际上是被转码为WAV格式了。

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 AudioPlayTest {
	private AudioInputStream audioStream;
	private AudioFormat audioFormat;
	private SourceDataLine sourceDataLine;
	
	public AudioPlayTest(String path) {
		playMusic(path);
	}
	
	private void playMusic(String path){
		try{
			int count;
			byte buf[] = new byte[2048];
			//获取音频输入流
		    audioStream = AudioSystem.getAudioInputStream(new File(path));
			//获取音频格式
			audioFormat = audioStream.getFormat();
			
			System.out.println("音频文件: "+path);
			System.out.println("音频Encoding: "+audioFormat.getEncoding());
			
			//如果不是wav格式,转换mp3文件编码。MPEG1L3(mp3格式)转为PCM_SIGNED(wav格式)
			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);

				audioStream = AudioSystem.getAudioInputStream(audioFormat,
						audioStream);
			} //转换mp3文件编码结束
			//封装音频信息
			DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class,
					audioFormat,AudioSystem.NOT_SPECIFIED);
			//获取虚拟扬声器(SourceDataLine)实例
			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(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		String path = "D:\\test\\三步舞曲.mp3";
		new AudioPlayTest(path);
		
		path = "D:\\test\\我是一片云.wav";
		new AudioPlayTest(path);
	}
}

实际上这个程序只是在"使用Java播放wav音乐"博客的第二种方案程序的基础上增加了一点对MP3格式音频的转码处理。请参见:
使用Java播放wav音乐_Java编程乐园的博客-CSDN博客

本例程的源码及相关的mp3的SPI支持库

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在 Debian 中播放 MP3 音乐文件需要使用 Java Sound API,以下是使用 Java 播放 MP3 音乐文件的简要步骤: 1. 安装 Java 环境:在终端中输入 `sudo apt-get install default-jdk` 安装 Java Development Kit。 2. 下载 Java MP3 播放器源代码:您可以从网上下载 Java MP3 播放器的源代码,然后使用 Java 编译器编译它。 3. 编译源代码:使用以下命令编译源代码:`javac <源代码文件名>.java`。 4. 运行程序:使用以下命令运行程序:`java <程序名> <mp3文件路径>`。 祝你好运! ### 回答2: 在Debian中使用Java播放MP3音乐文件,你需要遵循以下步骤: 1. 确保你的系统安装了Java开发工具包(JDK)。可以通过运行命令 `java -version` 来检查是否已经安装。如果没有安装,请使用 `sudo apt install default-jdk` 命令进行安装。 2. 下载并安装Java音频引擎(Java Sound API)。你可以从Oracle官方网站下载Java Sound API的库文件,然后将其解压到你的系统中。要确保下载与你系统中已安装的JDK版本相匹配的库文件。 3. 在你的Java项目中添加所需的MP3音频播放库。你可以使用JLayer或JavaFX库来实现MP3播放。如果使用JLayer库,请下载对应的JAR文件,并将其添加到你的项目的类路径中。如果使用JavaFX库,请确保你的JDK版本已包含JavaFX库。 4. 在你的Java代码中,使用所选的音频播放库来播放MP3文件。这个过程包含一些特定的方法和类,具体取决于你选择的库。你可以编写一个简单的Java类来实现播放器功能,通过调用库中的方法来播放MP3音乐。 总之,在Debian中使用Java播放MP3音乐需要确保JDK已经安装并配置好,下载并添加适当的音频播放库,最后在Java代码中使用这些库来播放MP3文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值