Java的基本API类中是不能播放MP3格式音频。
可以通过JMF(Java Media Framework Java媒体框架)来增加对mp3及更多格式音视频的播放。
JMF是也不可以播放MP3的,要下载MP3插件才可以并注册才可以下载。
mp3plugin插件下载下来也是一个jar文件,将该文件放到JMF下的lib中
JMF下Java播放MP3的步骤:
1 下载JMF 可以从oracle官网下载到
2 下载完成后 在window平台下是EXE的安装文件。可以安装在任意目录。
3 安装完成后 要对环境变量进行修改,增加该JMF
eg:我的安装在 D:\Program Files (x86)\JMF2.1.1e
JMF_HOME=D:\Program Files (x86)\JMF2.1.1e
path=...;%JMF_HOME%\bin;
classpath=...;%JMF_HOME%\*.jar
4 将JMF的lib的所有jar都复制到JDK的jre/lib/ext 下 .
注意:一定要将mp3plugin.jar也复制到该文件夹下
5 注册MP3plugin插件
在JMF目录的bin目录中,有个jmfregistry,运行之,在plugin选项卡的Codec选项卡中的左边的文本框中,输入com.sun.media.codec.audio.mp3.JavaDecoder,点击中间的add按钮,这样就在列表中注册了mp3的插件,然后按以下commit
这里不改的话,就会出现下面的问题:
Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits
Failed to realize: input media not supported: mpeglayer3 audio
6 在JMF的lib文件夹中,有个jmf.properties文件,将此文件和其他jar包(包括mp3plugin.jar)都添加到eclipse项目的lib目录中 ,添加到buildpath
测试代码:
package com.jmf.test;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.media.bean.playerbean.MediaPlayer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame{
private static MediaPlayer mediaPlayer = null;
JPanel contentPanel = new JPanel();
public Test(){
mediaPlayer = new MediaPlayer();
mediaPlayer.setMediaLocation("file:///E:/HappyBirthday/music/onceisnice.mp3");
setContentPane(contentPanel);
contentPanel.setLayout(new FlowLayout());
JButton playButton = new JButton();
playButton.setText("play");
playButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mediaPlayer.realize();
mediaPlayer.start();
}
});
contentPanel.add(playButton);
}
public static void main(String[] args){
Test test = new Test();
test.setVisible(true);
test.setSize(100, 200);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
注意:不知为何,有的音乐使用JMF是播放不出来的。我使用百度音乐api下载下来音乐,但是在JMF中播放不了,在其他的音乐播放器中都能播放出来。而且,在JMF中能播放从酷狗中下载下来的音乐,就是无法播放我从百度音乐api下载下来的音乐。所以,我打算放弃使用JMF,使用MPlayer,而且MPlayer的功能比JMF强大多了。感兴趣的可以去这个网址,下载下来源码自己看看:
http://download.csdn.net/detail/susuifeng/2251661