导航:首页 > 编程语言 > javamp3pcm

javamp3pcm

发布时间:2023-07-09 00:59:55

1. 如何用java做一个音乐播放器

首先下载播放mp3的包,比如mp3spi1.9.4.jar。在工程中添加这个包。

播放器演示代码如下

packagecom.test.audio;
importjava.io.File;
importjava.awt.BorderLayout;
importjava.awt.FileDialog;
importjava.awt.Frame;
importjava.awt.GridLayout;
importjava.awt.Label;
importjava.awt.List;
importjava.awt.Menu;
importjava.awt.MenuBar;
importjava.awt.MenuItem;
importjava.awt.MenuShortcut;
importjava.awt.Panel;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;

importjavax.sound.sampled.AudioFormat;
importjavax.sound.sampled.AudioInputStream;
importjavax.sound.sampled.AudioSystem;
importjavax.sound.sampled.DataLine;
importjavax.sound.sampled.SourceDataLine;

{
/**
*
*/
=-2605658046194599045L;
booleanisStop=true;//控制播放线程
booleanhasStop=true;//播放线程状态

液悔Stringfilepath;//播放文件目录
Stringfilename;//播放文件名称
;//文件流
AudioFormataudioFormat;//文件格式
SourceDataLinesourceDataLine;//输出设备

Listlist;//文件列表
Labellabelfilepath;//播放目录显示标签
Labellabelfilename;//播放文件显示标签

publicMusicPlayer(){
闹磨正//设置窗体属性
setLayout(newBorderLayout());
setTitle("MP3MusicPlayer");
setSize(350,370);

//建立菜单栏
MenuBarmenubar=newMenuBar();
Menumenufile=newMenu("File");
MenuItemmenuopen=newMenuItem("Open",newMenuShortcut(KeyEvent.VK_O));
menufile.add(menuopen);
游宴menufile.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
open();
}
});
menubar.add(menufile);
setMenuBar(menubar);

//文件列表
list=newList(10);
list.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
//双击时处理
if(e.getClickCount()==2){
//播放选中的文件
filename=list.getSelectedItem();
play();
}
}
});
add(list,"Center");

//信息显示
Panelpanel=newPanel(newGridLayout(2,1));
labelfilepath=newLabel("Dir:");
labelfilename=newLabel("File:");
panel.add(labelfilepath);
panel.add(labelfilename);
add(panel,"North");

//注册窗体关闭事件
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
setVisible(true);
}

//打开
privatevoidopen(){
FileDialogdialog=newFileDialog(this,"Open",0);
dialog.setVisible(true);
filepath=dialog.getDirectory();
if(filepath!=null){
labelfilepath.setText("Dir:"+filepath);

//显示文件列表
list.removeAll();
Filefiledir=newFile(filepath);
File[]filelist=filedir.listFiles();
for(Filefile:filelist){
Stringfilename=file.getName().toLowerCase();
if(filename.endsWith(".mp3")||filename.endsWith(".wav")){
list.add(filename);
}
}
}
}

//播放
privatevoidplay(){
try{
isStop=true;//停止播放线程
//等待播放线程停止
System.out.print("Start:"+filename);
while(!hasStop){
System.out.print(".");
try{
Thread.sleep(10);
}catch(Exceptione){
}
}
System.out.println("");
Filefile=newFile(filepath+filename);
labelfilename.setText("Playing:"+filename);

//取得文件输入流
audioInputStream=AudioSystem.getAudioInputStream(file);
audioFormat=audioInputStream.getFormat();
//转换mp3文件编码
if(audioFormat.getEncoding()!=AudioFormat.Encoding.PCM_SIGNED){
audioFormat=newAudioFormat(AudioFormat.Encoding.PCM_SIGNED,
audioFormat.getSampleRate(),16,audioFormat
.getChannels(),audioFormat.getChannels()*2,
audioFormat.getSampleRate(),false);
audioInputStream=AudioSystem.getAudioInputStream(audioFormat,
audioInputStream);
}

//打开输出设备
DataLine.InfodataLineInfo=newDataLine.Info(
SourceDataLine.class,audioFormat,
AudioSystem.NOT_SPECIFIED);
sourceDataLine=(SourceDataLine)AudioSystem.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();

//创建独立线程进行播放
isStop=false;
ThreadplayThread=newThread(newPlayThread());
playThread.start();
}catch(Exceptione){
e.printStackTrace();
}
}

classPlayThreadextendsThread{
bytetempBuffer[]=newbyte[320];

publicvoidrun(){
try{
intcnt;
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(Exceptione){
e.printStackTrace();
System.exit(0);
}
}
}

publicstaticvoidmain(Stringargs[]){
newMusicPlayer();
}
}

2. 所有音乐格式中,哪种格式音质最好求解答

PCM,是音频文件里,级别最高的,是所有数字音频(模拟的不包括在内)的始祖,保真度最高,体积十分庞大,常见的格式有pcm和cda,多用来录制唱片如cd文件。CD不是一种格式,它是一种标准,详细请见SONY(索尼)公布的官方红皮书,CD是利用特殊的方式,直接刻录音轨保存在CD-ROM盘片(专用的CD盘,当然也可以是普通的CD-ROM盘,这是后来修改的)上的,无法作为一种格式来保存。
所以,应当说,PCM的格式是音质最好最高,但是它的体积极其巨大,所以一般使用WAV作为原始文件来保存音频文件,质量也是相当高,损失几乎相当的少,但体积也比较大,这是微软开发并图鉴的一种格式,适合Windows操作系统,在现在最新的MAC系统上也可以使用。扩展名:.wav
在MAC系统上专用的原始音频格式,是AIFF,扩展名为Aiff,这是由苹果公司独立开发的,在Mac上十分常见。也就是说在Mac上这是最好的格式(PCM除外)。
在Unix和Java平台下(多指SUN的平台),相应的格式是AU,扩展名就是au。它是目前在Unix和java下的标准音频格式。
以上格式均为原始文件格式,一般都是体积巨大,为了便于在计算机上流传,人们开发了压缩格式,压缩分为有损压缩和无损压缩,显然有损压缩的压缩率更大,但它需要解决的问题就是如何解决音质的问题。一般通常的做法,就是牺牲人耳辨别率比较若以及人耳无法收听的部分,但是人的耳朵区别很大,所以很难照顾到所有的人。在唱见的格式中,比较不错的格式有flac(无损,扩展名flac)、Monkey's Audio(无损,扩展名ape)、DTS(多声道,主要用与DVD,扩展名dtc/wav)、AC3(杜比推出,环绕多声道,现场感逼真,扩展名ac3)、AAC(收费,音质好,扩展名Aac或mp4)、WMV(这也是种视频格式,wma和asf的升级版,质量相当高,扩展名wmv),另外还有MusePack(扩展名mpc,完全免费)以及MP3Pro(扩展名mp3)也相当不错,这些格式音质都相当高,甚至对于对声音颇有要求的用户来说表现也不差。

3. java音频处理问题

为什么audioFormat.getChannels(), 一次后还要再一个audioFormat.getChannels()*2
每声道每帧字节数2字节,再加上双声道所以用声道数(2)*字节数(2) = 每帧的总字节数
看来你的audioFormat不是从AudioInputStream中产生的啊?刚才回答你的问题我还没注意。原来audioFormat也可以new出来的啊,嘿嘿。

4. 如何将pcm文件转换为mp3

PCM(Pulse Code Molation----脉码调制录音)。所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录。PCM信号是由[1]、[0]等符号构成的数字信号。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的影响效果。

可以使用Goldwave,只需要用GoldWave打开要转换的PCM文件,然后在“文件File”选择另存为save as...,保存类型,选(*mp3),“参数Attributes”里选择要保存的码率即可。如下图所示:

5. java实现 mp3格式转换wav

阅读全文

与javamp3pcm相关的资料

热点内容
如何验证web服务器是否正常工作 浏览:130
全球最大的加密货币网站 浏览:284
解压文件为什么有问号 浏览:389
php考试系统模板 浏览:429
pdf导出图片模糊 浏览:608
我的世界编玩边学服务器地址 浏览:456
基于单片机的火灾报警系统 浏览:163
上海追星用什么app 浏览:422
海马m5压缩机维修 浏览:96
抖音怎么给自己喜欢的加密 浏览:245
中国五大加密货币 浏览:263
程序员手疼7年查6处骨肿瘤 浏览:39
python列表对象的创建与删除 浏览:467
python删除excel表格中的一行 浏览:521
android数据库的增删改查 浏览:632
云服务器2g4g有什么区别 浏览:324
显示文件夹所有文件的文件名函数 浏览:213
可以在网站写代码的编译器 浏览:76
王者换服务器怎么不用重玩 浏览:328
武汉编译ipfs云存储器 浏览:52